Pandas DataFrame DataFrame.query()関数
Suraj Joshi
2023年1月30日
-
pandas.DataFrame.query()
の構文: -
コード例:単一条件の
DataFrame.query()
メソッド -
コード例:列名に空白がある場合の
DataFrame.query()
メソッド -
コード例:複数の条件を持つ
DataFrame.query()
メソッド
pandas.DataFrame.query()
メソッドは、指定されたクエリ式を使用して、呼び出し元の DataFrame の行をフィルタリングします。
pandas.DataFrame.query()
の構文:
DataFrame.query(expr, inplace=False, **kwargs)
パラメーター
expr |
フィルターされた行に基づくクエリ式 |
inplace |
ブール。True の場合、呼び出し元の DataFrame をインプレースで変更します |
**kwargs |
メソッドのキーワード引数 |
戻り値
inplace
が True
の場合、フィルターされた 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 is a backend software engineer at Matrice.ai.
LinkedIn