Pandas を使用して数式から式を動的に評価する
問題:
を使用して算術式を評価するpd.eval は、変数、演算子の優先順位、
答え:
1. pd.eval の使用
pd.eval(
"df1.A + (df1.B * x)",
local_dict={"x": 5},
target=df2,
parser="python",
engine="numexpr",
)
引数:
-
式: 文字列として評価する式。
-
local_dict: 辞書グローバル名前空間で定義されていない変数が含まれています。
-
target: 結果を割り当てるデータフレーム。
-
parser: に使用されるパーサーを指定します。式を解析します (pandas またはpython).
-
engine: 式の評価に使用されるバックエンド (numexpr または python) を指定します。
2. df.eval の使用
df1.eval(
"A + (B * @x)",
target=df2,
parser="python",
engine="numexpr",
)
引数:
- df: 式が評価されるデータフレーム。
- expression: 文字列として評価する式。
- target:結果を割り当てるデータフレーム。
- parser: 式の解析に使用するパーサーを指定します (pandas または Python)。
- engine: 式の評価に使用するバックエンドを指定します (numexpr または Python)。 .
3. pd.eval と df.eval の違い
- pd.eval は任意のオブジェクトの式を評価しますが、df.eval は特にデータフレームの式を評価します。
- df.eval には混乱を避けるために列名の前にアットマーク (@) を付けますが、pd.eval ではそうします。
- df.eval は代入を伴う複数行の式を処理できますが、pd.eval は処理できません。
補足:
- 式が二重引用符で囲まれていることを確認してください。
- x = 5 は値 5 を割り当てます。グローバル名前空間の変数 x に代入します。Python の演算子の優先順位ルールや複雑な式を扱う場合は、
- parser='python' をお勧めします。
- target=df2 は、結果が指定されたものに割り当てられることを保証します。 dataframe.
- engine='numexpr' は、最適化された numexpr エンジンを利用して改善されています。パフォーマンス。
- inplace=True を使用して、元のデータフレームをその場で変更できます。
- df.query は条件式にも使用でき、指定された基準を満たす行を返します。
以上がPandas DataFrame 内で算術式を動的に評価するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。