ホームページ >バックエンド開発 >Python チュートリアル >Pandas DataFrame 内で算術式を動的に評価するにはどうすればよいですか?

Pandas DataFrame 内で算術式を動的に評価するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-17 12:37:02852ブラウズ

How can I dynamically evaluate arithmetic expressions within Pandas DataFrames?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。