Pandas DataFrame DataFrame.query()関数

  1. pandas.DataFrame.query() の構文:
  2. コード例:単一条件の DataFrame.query() メソッド
  3. コード例:列名に空白がある場合の DataFrame.query() メソッド
  4. コード例:複数の条件を持つ 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

関連記事 - Pandas DataFrame

  • Pandas DataFrame DataFrame.mean()関数
  • Pandas DataFrame DataFrame.fillna()関数
  • comments powered by Disqus