使用Pandas 動態計算公式中的表達式
問題:
問題:
使用以下函數計算算術表達式pd.eval 同時考慮變數、運算子優先權和資料幀的複雜結構。
答:
1。使用 pd.eval
- 參數:
-
表達式: 作為字串求值的公式。
-
local_dict: 包含未在全域命名空間中定義的變數的字典。
-
target: 將結果分配給的資料幀。
-
parser: 指定用於解析表達式的解析器(pandas 或 python)。
engine: 指定用於計算表達式的後端(numexpr 或 python) ).
2.使用df.eval
- 參數:
-
- df:正在評估表達式的資料幀。
- 表達式:作為字串求值的公式。
- 目標:將結果分配給的資料幀。
解析器:指定用於解析表達式的解析器(pandas 或 python)。
engine:指定用於計算表達式的後端(numexpr 或 python)。
- 3. pd.eval 和df.eval 之間的差異
-
- pd.eval 計算任何物件上的表達式,而df .eval 專門計算資料幀上的表達式。
df.eval 需要在列名前面加上 at 符號 (@) 以避免混淆,而 pd.eval 則不然。
df.eval 可以處理帶有賦值的多行表達式,而 pd.eval 則不能。
- 附加說明:
-
- 確保表達式用雙引號括起來。
- x = 5 將值5 分配給全域命名空間中的變數x .
- 在處理Python 的運算子優先權規則和複雜表達式時,建議使用parser='python' 。
- target=df2 確保將結果指派給指定的資料幀。
- engine='numexpr' 利用最佳化的 numexpr 引擎來提升效能。
inplace=True 可用於就地修改原始資料幀。 df.query 也可用於條件式,傳回符合指定條件的行。
以上是如何動態評估 Pandas DataFrame 中的算術表達式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!