Pandas DataFrame DataFrame.query()関数

Suraj Joshi 2023年1月30日
  1. pandas.DataFrame.query() の構文:
  2. コード例:単一条件の DataFrame.query() メソッド
  3. コード例:列名に空白がある場合の DataFrame.query() メソッド
  4. コード例:複数の条件を持つ DataFrame.query() メソッド
Pandas DataFrame DataFrame.query()関数

pandas.DataFrame.query() メソッドは、指定されたクエリ式を使用して、呼び出し元の DataFrame の行をフィルタリングします。

pandas.DataFrame.query() の構文:

DataFrame.query(expr, inplace=False, **kwargs)

パラメーター

expr フィルターされた行に基づくクエリ式
inplace ブール。True の場合、呼び出し元の DataFrame をインプレースで変更します
**kwargs メソッドのキーワード引数

戻り値

inplaceTrue の場合、フィルターされた DataFrame を返します。それ以外の場合は None

コード例:単一条件の DataFrame.query() メソッド

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

filtered_df=df.query('X>1')
print("Filtered DataFrame:")
print(filtered_df)

出力:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Filtered DataFrame:
   X  Y
1  2  1
2  3  8

指定されたクエリ式を満たす行のみ、つまり列 X の値が 1 より大きい行のみを含む DataFrame を返します。

コード例:列名に空白がある場合の DataFrame.query() メソッド

このメソッドを DataFrame に適用する前に、クエリ対象の列名に空白がないことを確認する必要があります。

スペースを含む列名がある場合は、バッククォート引用符(\)を使用できます。

import pandas as pd

df = pd.DataFrame(
    {
        "X": [
            1,
            2,
            3,
        ],
        "Y": [4, 1, 8],
        "A B": [3, 5, 7],
    }
)
print("Original DataFrame:")
print(df)
filtered_df = df.query("`A B`>5")
print("Filtered DataFrame:")
print(filtered_df)

出力:

Original DataFrame:
   X  Y  A B
0  1  4    3
1  2  1    5
2  3  8    7
Filtered DataFrame:
   X  Y  A B
2  3  8    7

ここでは、列 'A B' の名前にスペースが含まれています。列のクエリ式を作成するには、列名をバッククォートで囲みます。そうしないと、エラーが発生します。

コード例:複数の条件を持つ DataFrame.query() メソッド

import pandas as pd

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
print("Original DataFrame:")
print(df)

filtered_df=df.query('X>1' and 'Y==1')
print("Filtered DataFrame:")
print(filtered_df)

出力:

Original DataFrame:
   X  Y
0  1  4
1  2  1
2  3  8
Filtered DataFrame:
   X  Y
1  2  1

複数の条件に基づいて DataFrame をフィルター処理する場合は、and 演算子を使用して複数のクエリ式を組み合わせ、単一の複合クエリ式を作成します。

X の値が 1 より大きく、列 Y の値が 1 に等しい行を持つ DataFrame を提供します。

query() メソッドを呼び出した後、inplace = True を設定して元の DataFrame を変更できます。

import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
filtered_df=df.query('X>1' and 'Y==1',inplace=True)
print(df)

出力:

   X  Y
1  2  1
著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

関連記事 - Pandas DataFrame