Pandas で特定の列が所定の条件を満たすすべての行のインデックスを取得する方法

Suraj Joshi 2023年1月30日 2020年6月13日
  1. 特定の列が特定の条件を満たすすべての行のインデックスを取得する単純なインデックス操作
  2. 特定の列が指定された条件を満たすすべての行のインデックスを取得するための np.where() メソッド
  3. pandas.DataFrame.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 を満たすすべての行のインデックスのリストを返します。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Pandas DataFrame

関連記事 - Pandas DataFrame Row

関連記事 - Pandas DataFrame Column