Pandas 'apply' 函数处理多列时出现问题?
Pandas 库提供了 'apply' 函数用于逐行转换,包括涉及多列的操作。但是,用户在尝试访问函数中的特定列时可能会遇到问题。
问题中举例说明了一个此类问题,其中用户尝试应用采用两个标量值(“a”和“ c') 作为其输入。但是,错误消息表明名称“a”无法识别。
此问题的解决方案在于使用正确的语法在“apply”函数中引用列。用户必须将其括在方括号(“[”和“]”)中,而不是使用裸列名称(“a”)。例如,要访问 'a' 列,应将其写为 'row['a']'。
修改后的代码:
<code class="python">df['Value'] = df.apply(lambda row: my_test(row['a'], row['c']), axis=1)</code>
其他注意事项:
定义与“apply”一起使用的自定义函数时,确保它在正确的数据类型上运行非常重要。在提供的更新示例中,定义“my_test”函数来计算 DataFrame 中所有行的输入值(“a”)与“a”列之间的累积差值。这要求 'a' 和 'df'a'' 都是数值。
替代语法:
为了方便起见,Pandas 为 'apply' 提供了替代语法' 在多列上操作时。通过将列名称指定为函数的参数,可以在函数内直接访问列值。
示例:
<code class="python">def my_test2(row): return row['a'] % row['c'] df['Value'] = df.apply(my_test2, axis=1)</code>
以上是如何解决处理多列时 Pandas'apply”函数中的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!