Python
 Computer >> コンピューター >  >> プログラミング >> Python

【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()を使えばデータの中身(区切りや長さ)をそのままに、区間の開閉方向だけを柔軟に変更できます。

  1. Python Pandas – IntervalArray内の各区間の右端をインデックスとして取得する方法

    PandasのIntervalArrayに含まれる各区間(Interval)の右端(右エンドポイント)をインデックス(Index)として取得するには、array.rightプロパティを使用します。このプロパティは、各区間の右側の境界値をまとめたIndexオブジェクトを返します。なお、pd.Interval(10, 25)のように作成した区間は「左開・右閉」の区間(10, 25]となるため、右端の値はその区間に含まれる点にも注意してください。手順1:ライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pd手順2:Intervalオブジェクトの作成2つ

  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) 作成