HOWTO · Pandas
Pandas で特定の列が所定の条件を満たすすべての行のインデックスを取得する方法
単純なインデックス付け操作、np.where()関数、および query()メソッドを使用して、特定の列が Pandas の特定の条件を満たすすべての行のインデックスを取得できます。
このページの内容
単純なインデックス付け操作を使用して、Pandas で特定の列が特定の条件を満たすすべての行のインデックスを取得できます。また、NumPy パッケージの where() メソッドと DataFrame オブジェクトの query() メソッドを使用してインデックスを見つけることもできます。
特定の列が特定の条件を満たすすべての行のインデックスを取得する単純なインデックス操作
単純なインデックス付け操作を使用すると、特定の列が特定の条件を満たす行のインデックスを取得するタスクを実行できます。
import pandas as pd
import numpy as np
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
reqd_Index = df[df["Sales"] >= 300].index.tolist()
print(reqd_Index)
出力:
[1, 2, 4, 5]
ここで、df['Sales']>=300 は、Sales 列の値が 300 以上の場合に要素が True である一連のブール値を提供します。
df[df['Sales']>=300].index を使用して、Sales 値が 300 以上の行のインデックスを取得できます。
最後に、tolist() メソッドはすべてのインデックスをリストに変換します。
特定の列が指定された条件を満たすすべての行のインデックスを取得するための np.where() メソッド
np.where() は条件を入力として取り、指定された条件を満たす要素のインデックスを返します。したがって、np.where() を使用して、特定の列が特定の条件を満たすすべての行のインデックスを取得できます。
import pandas as pd
import numpy as np
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
reqd_Index = list(np.where(df["Sales"] >= 300))
print(reqd_Index)
出力:
[array([1, 2, 4, 5])]
これは、Sales 列の値が 300 以上のすべての行のインデックスを出力します。
pandas.DataFrame.query() は、特定の列が特定の条件を満たすすべての行のインデックスを取得する
pandas.DataFrame.query() は、指定されたクエリ式から得られた DataFrame を返します。これで、DataFrame の index 属性を使用して、特定の列が特定の条件を満たすすべての行のインデックスを返すことができます。
import pandas as pd
import numpy as np
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
reqd_index = df.query("Sales == 300").index.tolist()
print(reqd_index)
出力:
[1, 4, 5]
特定の列が指定された条件 Sales == 300 を満たすすべての行のインデックスのリストを返します。