首頁  >  文章  >  後端開發  >  如何使用 pd.eval()、DataFrame.eval() 和 DataFrame.query() 動態計算 Pandas 中的表達式?

如何使用 pd.eval()、DataFrame.eval() 和 DataFrame.query() 動態計算 Pandas 中的表達式?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-20 04:14:02645瀏覽

How to Dynamically Evaluate Expressions in Pandas Using pd.eval(), DataFrame.eval(), and DataFrame.query()?

動態計算Pandas 中公式的表達式

在pandas 中,有多種方法可以動態計算公式中的表達式:

1。 pd.eval()

此函數使用字串作為輸入來計算算術表達式。它支援數學運算、邏輯運算子和條件語句。您可以如下使用它:

expression = "df1['A'] + (df1['B'] * x)"
pd.eval(expression)

2. DataFrame.eval()

與pd.eval() 類似,此方法計算DataFrame 中的表達式。它提供了一種無需指定“df1”即可存取列的便捷方法。前綴。

df1.eval("A + (B * x)")

3. DataFrame.query()

此函數計算條件表達式並傳回布林遮罩。然後,您可以使用遮罩來過濾 DataFrame。

condition = "A >= B"
df1.query(condition)

特定問題的答案:

  1. 最佳效能: 使用pd.eval() 或DataFrame.eval( ) 與“numexpr”後端。 「python」後端沒有提供任何效能優勢,且有安全風險。
  2. 指派結果:您可以使用「target=」將表達式的結果指派回 DataFrame參數。

    df2 = pd.DataFrame()
    pd.eval("df2['D'] = df1['A'] + (df1['B'] * x)", target=df2)
  3. 傳遞參數:您可以使用「@」符號將參數作為表達式中的變數傳遞。

    expression = "df1['A'] + (@x * df1['B'])"
    pd.eval(expression, local_dict={"x": 5})

其他注意事項:

  • 根據您的需求和您要評估的表達式類型選擇適當的方法。
  • 使用必要時使用括號表示運算子優先權。
  • 「resolvers=」參數可用來提供在表達式中使用的自訂函數或變數。
  • 對於多行表達式和賦值,請使用 DataFrame.eval (),因為 query() 只接受單行條件。

以上是如何使用 pd.eval()、DataFrame.eval() 和 DataFrame.query() 動態計算 Pandas 中的表達式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn