使用多列引用對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 中的多列時如何解決名稱錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!