Python Pandasのset_closed()で現在のIntervalArrayと同一の、指定した側で閉じた配列を返す方法
PythonのPandasライブラリでは、現在のIntervalArrayと同一でありながら、指定した側で閉じられた新しいIntervalArrayを返したい場合に、set_closed()メソッドを使用します。引数にbothを指定すると、区間の両端が閉じた(両端を含む)IntervalArrayが生成されます。
set_closed()メソッドとは
set_closed()は、既存のIntervalArrayの各区間の開閉状態を変更したコピーを返すメソッドです。指定できる値は以下の4種類です。
- 'left':左端のみ閉じる
- 'right':右端のみ閉じる
- 'both':両端を閉じる
- 'neither':両端とも開く
実装手順
まず、必要なライブラリをインポートします。
import pandas as pd
次に、分割点の配列から新しいIntervalArrayを作成します。
array = pd.arrays.IntervalArray.from_breaks([0, 1, 2, 3, 4, 5])
作成したIntervalArrayを表示します。
print("Our IntervalArray...\n",array)
set_closed()に'both'を渡し、両端が閉じられた同一のIntervalArrayを取得します。
print("\nAn identical IntervalArray closed on the specified side...\n", array.set_closed('both'))
サンプルコード
以下に完全なコード例を示します。
import pandas as pd
# 分割点の配列から新しいIntervalArrayを作成
array = pd.arrays.IntervalArray.from_breaks([0, 1, 2, 3, 4, 5])
# IntervalArrayを表示
print("Our IntervalArray...\n",array)
# 指定した側(両端)で閉じられた同一のIntervalArrayを表示
print("\nAn identical IntervalArray closed on the specified side...\n", array.set_closed('both'))
出力結果
上記のコードを実行すると、以下のような出力が得られます。
Our IntervalArray... <IntervalArray> [(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]] Length: 5, dtype: interval[int64, right] An identical IntervalArray closed on the specified side... <IntervalArray> [[0, 1], [1, 2], [2, 3], [3, 4], [4, 5]] Length: 5, dtype: interval[int64, both]
解説
元のIntervalArrayはデフォルトで右側が閉じている(dtype: interval[int64, right])ため、各区間は (0, 1] のように左開・右閉となっています。set_closed('both')を実行すると、dtypeが interval[int64, both] に変化し、各区間が [0, 1] のように両端を含む形に変換されていることがわかります。このように、set_closed()を使えば元のデータを変更せずに、開閉状態だけを変えた新しいIntervalArrayを簡単に作成できます。
-
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) 作成