複数の列を含む Pandas 'apply' 関数のトラブルシューティング
'apply 関数を使用して Pandas データフレーム内の複数の列に関数を適用しようとした場合' 関数を使用すると、列名が文字列で囲まれていない場合、または関数定義で構文エラーが発生した場合、エラー メッセージが表示されることがあります。
未定義の名前の問題を解決するには、列名が指定されていることを確認してください。一重引用符または二重引用符で囲みます。たとえば、'row[a]' を使用する代わりに、'row['a']' または 'row["a"]' を使用します。
さらに、'apply' 内で使用される関数に複雑な関数が含まれる場合は、操作や複数のループがある場合は、構文エラーやステートメントの欠落を確認することが重要です。これらのエラーは関数の実行に影響を及ぼし、間違った結果やエラー メッセージが表示される可能性があります。
次の例を考えてみましょう。
df = DataFrame({'a': np.random.randn(6),
'b': ['foo', 'bar'] * 3,
'c': np.random.randn(6)})
def my_test(row):
cum_diff = 0
for ix in df.index():
cum_diff = cum_diff (row['a'] - df['a'][ix])
return cum_diff
この例では、ループ中に存在しないインデックスにアクセスしようとすると、エラー メッセージ「IndexError: インデックスが範囲外です」が表示されます。これを修正するには、インデックスがデータフレームの境界内にあることを確認するか、
def my_test(row):
cum_diff = 0
for index, value in df.iterrows():
cum_diff = (row['a'] - value['a'])
return cum_diff
関数を注意深く調べ、列名を文字列で囲むことにより、問題を効果的に解決し、複数の列で 'apply' 関数を利用できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3