Pandas DataFrame DataFrame.query() 函式
Suraj Joshi
2023年1月30日
2020年6月17日
-
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
它返回 DataFrame
,其中只有滿足給定查詢表示式的行,即只有列 X
的值大於 1
的行。
示例程式碼:當列名有空格時的 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
操作符將多個查詢表示式組合成一個複合查詢表示式。
它給出的 DataFrame
中,列 X
的值大於 1
,列 Y
的值等於 1
的行。
我們可以在呼叫 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
Author: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn