用法:
DataFrame.query(expr, inplace=False, **kwargs)
使用布爾表達式查詢 DataFrame 的列。
- expr:str
要評估的查詢字符串。
您可以通過在變量前麵加上“@”字符來引用環境中的變量,例如
@a + b
。您可以通過將它們括在反引號中來引用不是有效 Python 變量名的列名。因此,包含空格或標點符號(下劃線除外)或以數字開頭的列名必須用反引號括起來。 (例如,名為“麵積 (cm^2)”的列將被引用為
`Area (cm^2)`
)。不能使用作為 Python 關鍵字的列名(如 “list”, “for”, “import” 等)。例如,如果您的一列稱為
a a
並且您想將其與b
相加,則您的查詢應該是`a a` + b
。- inplace:bool
查詢是否應就地修改數據或返回修改後的副本。
- **kwargs:
有關
DataFrame.query()
接受的關鍵字參數的完整詳細信息,請參閱eval()
的文檔。
- DataFrame 或無
DataFrame 由提供的查詢表達式產生,如果
inplace=True
則為 None。
參數:
返回:
注意:
該表達式的評估結果首先傳遞給
DataFrame.loc
,如果由於多維鍵(例如DataFrame)而失敗,則結果將傳遞給DataFrame.__getitem__()
。此方法使用頂級
eval()
函數來評估傳遞的查詢。pandas.DataFrame.query方法默認使用稍微修改的 Python 語法。例如,
&
和|
(按位)運算符具有其布爾表兄弟的優先級,and
和or
.這是語法上有效的 Python,但語義不同。您可以通過傳遞關鍵字參數
parser='python'
來更改表達式的語義。這強製執行與 Python 空間中的求值相同的語義。同樣,您可以傳遞engine='python'
以使用 Python 本身作為後端來評估表達式。不建議這樣做,因為與使用numexpr
作為引擎相比效率低下。DataFrame
實例的DataFrame.index
和DataFrame.columns
屬性默認放置在查詢命名空間中,這允許您將框架的索引和列都視為框架中的列。標識符index
用於幀索引;您還可以使用索引的名稱在查詢中識別它。請注意,Python 關鍵字不能用作標識符。有關更多詳細信息和示例,請參閱索引中的
query
文檔。反引號引用的變量
反引號引用的變量被解析為文字 Python 代碼,並在內部轉換為 Python 有效標識符。這會導致以下問題。
在解析反引號引號字符串中的一些不允許的字符時,將替換為允許作為 Python 標識符的字符串。這些字符包括 Python 中的所有運算符、空格字符、問號、感歎號、美元符號和歐元符號。對於超出 ASCII 範圍 (U+0001..U+007F) 的其他字符以及 PEP 3131 中未進一步指定的字符,查詢解析器將引發錯誤。這不包括不同於空格字符的空格,還包括主題標簽(因為它用於評論)和反引號本身(反引號也不能被轉義)。
在特殊情況下,在反引號周圍形成一對的引號會使解析器感到困惑。例如,
`it's` > `that's`
會引發錯誤,因為它會形成一個帶引號的字符串 ('s > `that'
),其中包含一個反引號。另請參閱有關詞法分析的 Python 文檔 (https://docs.python.org/3/reference/lexical_analysis.html) 以及
pandas.core.computation.parsing
中的源代碼。例子:
>>> df = pd.DataFrame({'A': range(1, 6), ... 'B': range(10, 0, -2), ... 'C C': range(10, 5, -1)}) >>> df A B C C 0 1 10 10 1 2 8 9 2 3 6 8 3 4 4 7 4 5 2 6 >>> df.query('A > B') A B C C 4 5 2 6
前麵的表達式等價於
>>> df[df.A > df.B] A B C C 4 5 2 6
對於名稱中帶有空格的列,您可以使用反引號。
>>> df.query('B == `C C`') A B C C 0 1 10 10
前麵的表達式等價於
>>> df[df.B == df['C C']] A B C C 0 1 10 10
相關用法
- Python pandas.DataFrame.quantile用法及代碼示例
- Python pandas.DataFrame.ewm用法及代碼示例
- Python pandas.DataFrame.dot用法及代碼示例
- Python pandas.DataFrame.apply用法及代碼示例
- Python pandas.DataFrame.combine_first用法及代碼示例
- Python pandas.DataFrame.cumsum用法及代碼示例
- Python pandas.DataFrame.rename用法及代碼示例
- Python pandas.DataFrame.to_numpy用法及代碼示例
- Python pandas.DataFrame.dtypes用法及代碼示例
- Python pandas.DataFrame.cummin用法及代碼示例
- Python pandas.DataFrame.truncate用法及代碼示例
- Python pandas.DataFrame.sparse.from_spmatrix用法及代碼示例
- Python pandas.DataFrame.add_prefix用法及代碼示例
- Python pandas.DataFrame.to_json用法及代碼示例
- Python pandas.DataFrame.convert_dtypes用法及代碼示例
- Python pandas.DataFrame.assign用法及代碼示例
- Python pandas.DataFrame.radd用法及代碼示例
- Python pandas.DataFrame.add用法及代碼示例
- Python pandas.DataFrame.drop用法及代碼示例
- Python pandas.DataFrame.rename_axis用法及代碼示例
注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.DataFrame.query。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。