複数の列を参照する Pandas 'apply' 関数のトラブルシューティング
Pandas DataFrame の複数の列にカスタム関数を適用しようとすると、 'apply' 関数で NameError が発生しました。
エラー メッセージ「グローバル名 'a' が定義されていません」は、関数内で 'a' 変数にアクセスできないことを示します。詳しく調べると、列名は「row['a']」のように引用符で囲む必要があることがわかります。
修正されたコードは次のようになります。
<code class="python">df['Value'] = df.apply(lambda row: my_test(row['a'], row['c']), axis=1)</code>
ただし、この構文エラーを解決した後でも、より複雑な関数を使用するとコードは引き続き失敗します。これは別の問題を示唆しています。
提供された関数の重要なステップは、DataFrame のインデックスを反復処理し、パラメーター 'a' を列 'a' の各値と比較することです。これらの要素にアクセスするには、構文を次のように調整する必要があります:
<code class="python">def my_test(a): cum_diff = 0 for ix in df.index: cum_diff += (a - df['a'][ix]) return cum_diff</code>
これらの修正を組み込むことで、コードは期待どおりに機能するようになります。
以上がPandas の複数の列に関数を適用する際の NameErrors をトラブルシューティングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。