【Python・Pandas】IntervalArray.overlaps()で閉じた端点を共有する区間が重なっているかどうかを確認する方法
閉じた端点(closed endpoint)を共有する区間(Interval)同士が重なっているかどうかを確認するには、PandasのIntervalArray.overlaps()メソッドを使用します。このメソッドは、指定した区間と配列内の各区間が共通の点を持つかどうかをブール値(True/False)で返します。
基本の流れ
まず、必要なライブラリをインポートします。
import pandas as pd
2つの区間は、閉じた端点を含む共通の点を1つでも持っていれば「重なっている」とみなされます。ここでは、from_tuples()を使ってIntervalArrayを作成します。
intervals = pd.arrays.IntervalArray.from_tuples([(10, 20), (15, 35)])
作成したIntervalArrayを表示してみましょう。
print("IntervalArray...\n", intervals)
次に、閉じた端点を共有する区間が重なっているかどうかを確認します。ここでは、closedパラメータに'left'を指定し、左側が閉じた区間 [15, 28) を比較対象としています。
print("\nDoes interval that share closed endpoints overlap or not...\n",
intervals.overlaps(pd.Interval(15, 28, closed='left')))
サンプルコード全体
import pandas as pd
# 閉じた端点を含む共通の点を持つ場合、2つの区間は重なっているとみなされる
# IntervalArrayを作成
intervals = pd.arrays.IntervalArray.from_tuples([(10, 20), (15, 35)])
# IntervalArrayを表示
print("IntervalArray...\n", intervals)
# 各区間の長さを表示
print("\nInterval length...\n", intervals.length)
# 閉じた端点を共有する区間が重なっているかどうかを確認
# closedパラメータに'left'を指定し、左側を閉じた区間として設定
print("\nDoes interval that share closed endpoints overlap or not...\n",
intervals.overlaps(pd.Interval(15, 28, closed='left')))
実行結果
上記のコードを実行すると、次のような出力が得られます。
IntervalArray...
<IntervalArray>
[(10, 20], (15, 35]]
Length: 2, dtype: interval[int64, right]
Interval length...
Int64Index([10, 20], dtype='int64')
Does interval that share closed endpoints overlap or not...
[ True True]
結果の解説
作成されたIntervalArrayは (10, 20] と (15, 35] の2つの区間を持ちます。それぞれの長さは10と20です。
比較対象とした区間 [15, 28) との重なり判定の結果は [True, True] となりました。これは、両方の区間が [15, 28) と共通の範囲を持っているためです。
overlaps()メソッドのポイント
- 2つの区間が1つでも共通の点を持てば
Trueを返します。 - 閉じた端点(例:
(10, 20]の20)を共有している場合も重なりありと判定されます。 - 開いた端点のみが一致する場合(例:
(10, 20)と(20, 30))はFalseを返します。 - 引数には単一の
pd.Intervalオブジェクトを渡すほか、同じ長さの別のIntervalArrayを渡すことも可能です。
-
Python Pandas – IntervalArrayの区間が左側・右側・両側・非閉のどれで閉じているかを確認する方法
IntervalArray内の区間(インターバル)が、左側・右側・両側のいずれで閉じているのか、あるいはどちらでも閉じていないのかを確認するには、array.closedプロパティを使用します。このプロパティは、配列内のすべての区間に共通する「閉じ」の設定を文字列として返します。必要なライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pdIntervalオブジェクトの作成次に、2つのIntervalオブジェクトを作成します。「closed」パラメータに「both」を指定することで、両側が閉じた区間を設定できます。閉区間とは、数学において角括弧 [
-
Python Pandas:開いた端点を共有する2つのIntervalオブジェクトが重なるかどうかを確認する方法
開いた端点を共有する2つのIntervalオブジェクトが重なっているかどうかを確認するには、overlaps()メソッドを使用します。 Pandasにおける区間の重複判定のルールはシンプルです。2つの区間が「共通の点」を持つ場合、その点が閉じた端点であれば重なっているとみなされます。しかし、開いた端点しか共有していない場合、その点はどちらの区間にも実際には含まれていないため、重なっているとは判断されません。 必要なライブラリのインポート まず、必要なライブラリをインポートします。 import pandas as pd Intervalオブジェクトの作成 2つのIntervalオブジェクト