【Python・Pandas】set_closed('left')で左側が閉じたIntervalArrayを返す方法
Pandasで現在のIntervalArrayと同一の内容を保ちながら、左側が閉じた(左閉区間の)新しいIntervalArrayを取得したい場合は、set_closed()メソッドに「left」を指定します。
set_closed()メソッドは、区間のどちら側の端点を含めるか(開閉の向き)を変更した新しいIntervalArrayを返します。引数には「left」「right」「both」「neither」のいずれかを指定でき、元のオブジェクト自体は変更されません。
基本的な使い方
まず、必要なライブラリをインポートします。
import pandas as pd
次に、from_breaks()を使ってIntervalArrayを作成します。
index = pd.arrays.IntervalArray.from_breaks(range(5))
作成した区間を表示してみましょう。
print("IntervalIndex...\n", index)そして、set_closed()に「left」を渡すことで、左側が閉じたIntervalArrayを返します。
print("\nResult...", index.set_closed('left'))サンプルコード
以下に完全なコード例を示します。
import pandas as pd
# IntervalArrayを作成
index = pd.arrays.IntervalArray.from_breaks(range(5))
# 区間を表示
print("IntervalIndex...\n", index)
# 各区間の長さを表示
print("\nIntervalIndex length...\n", index.length)
# 左側の境界値を表示
print("\nThe left bound for the IntervalIndex...\n", index.left)
# 右側の境界値を表示
print("\nThe right bound for the IntervalIndex...\n", index.right)
# 指定した側(ここでは"left")が閉じた、
# 現在のものと同一のIntervalArrayを返す
print("\nResult...", index.set_closed('left'))実行結果
上記のコードを実行すると、次のような出力が得られます。
IntervalIndex... <IntervalArray> [(0, 1], (1, 2], (2, 3], (3, 4]] Length: 4, dtype: interval[int64, right] IntervalIndex length... Int64Index([1, 1, 1, 1], dtype='int64') The left bound for the IntervalIndex... Int64Index([0, 1, 2, 3], dtype='int64') The right bound for the IntervalIndex... Int64Index([1, 2, 3, 4], dtype='int64') Result... <IntervalArray> [[0, 1), [1, 2), [2, 3), [3, 4)] Length: 4, dtype: interval[int64, left]
解説
元のIntervalArrayは右側が閉じた「(0, 1]」のような半開区間でしたが、set_closed('left')を適用することで、左側が閉じた「[0, 1)」という形式の区間に変換されていることがわかります。dtypeも「interval[int64, right」から「interval[int64, left」に変化しています。このように、set_closed()を使えばデータの中身(区切りや長さ)をそのままに、区間の開閉方向だけを柔軟に変更できます。
-
Python Pandas – IntervalArray内の各区間の右端をインデックスとして取得する方法
PandasのIntervalArrayに含まれる各区間(Interval)の右端(右エンドポイント)をインデックス(Index)として取得するには、array.rightプロパティを使用します。このプロパティは、各区間の右側の境界値をまとめたIndexオブジェクトを返します。なお、pd.Interval(10, 25)のように作成した区間は「左開・右閉」の区間(10, 25]となるため、右端の値はその区間に含まれる点にも注意してください。手順1:ライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pd手順2:Intervalオブジェクトの作成2つ
-
Python Pandas – IntervalArrayの各区間の左端をインデックスとして取得する方法
PandasのIntervalArrayに含まれる各区間(Interval)の左端(始点)をインデックス(Index)として取得するには、array.leftプロパティを使用します。このプロパティは、各Intervalの左側の境界値をまとめたインデックスを返します。 必要なライブラリのインポート まず、必要なライブラリをインポートします。 import pandas as pd Intervalオブジェクトの作成 2つのIntervalオブジェクトを作成します。 interval1 = pd.Interval(10, 25) interval2 = pd.Interval(15, 70) 作成