Pandas の数式から式を動的に評価する
pd.eval を使用した 1 つ以上のデータフレーム列の算術式の評価は、特に自動化する場合に一般的なタスクです。ワークフロー。次のコード スニペットを考えてみましょう:
`x = 5
df2['D'] = df1['A'] (df1['B'] * x)``
このコードは、df1 の列 A と B に対して演算を実行し、その結果に変数 x を乗算することにより、新しい列 D を df2 に追加します。目標は、式を文字列として実行する pd.eval の機能を利用して、このデータ操作を動的に繰り返すことです。
まず、入力 DataFrame を導入しましょう。
import pandas as pd import numpy as np np.random.seed(0) df1 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD')) df2 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD')) df1 A B C D 0 5 0 3 3 1 7 9 3 5 2 2 4 7 6 3 8 8 1 6 4 7 7 8 1 df2 A B C D 0 5 9 8 9 1 4 3 0 3 2 5 0 2 3 3 8 1 3 3 4 3 7 0 1
次を使用して式を動的に評価します。 pd.eval では、次のコードを使用できます:
result = pd.eval('df1.A (df1.B * x)')
このコード行は、評価された式を含む result と呼ばれる新しい DataFrame を作成します。 eval 関数は、次のような条件付き評価を実行するために使用することもできます。
pd.eval('df1.A > df2.A')
式の結果を割り当てるにはdf2 にするには、次の構文を使用します:
df2['D'] = pd.eval('df1.A (df1.B * x)', target=df2)
式文字列内で引数を渡すには、@ 記号を使用します。
pd.eval('df1.A (df1. B * @x)', local_dict={'x': 5})
パフォーマンスを最大化するには、次の点を考慮してください。引数:
parser='python' は、構文ルールを制御し、Python の演算子の優先順位との一貫性を確保します。
engine='numexpr' は、最適化された numexpr バックエンドを使用して高速に評価します。
これにより、次のことが提供されます。 pd.eval.
以上がpd.eval を使用して Pandas の数式から式を動的に評価する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。