Pandas:如何在多列中应用函数

我有一些关于pandas应用函数的问题,当使用多个列的时候,使用下面的数据帧:
df = DataFrame ({'a' : np.random.randn(6),
'b' : ['foo', 'bar'] * 3,
'c' : np.random.randn(6)})


和以下函数
def my_test(a, b):
return a % b

当我尝试将这个函数应用于:
df['Value'] = df.apply(lambda row: my_test(row[a], row[c]), axis=1)

我收到错误信息:
NameError: ("global name 'a' is not defined", u'occurred at index 0')

我不明白这个信息.
我非常感谢在这个问题上的任何帮助。
数据科学家 Level1 提问 在 2017-12-19 在 研究问题.
添加评论
1 答案
最佳答案

似乎你忘记了’ ‘。

In [43]: df['Value'] = df.apply(lambda row: my_test(row['a'], row['c']), axis=1)

In [44]: df
Out[44]:
a    b         c     Value
0 -1.674308  foo  0.343801  0.044698
1 -2.163236  bar -2.046438 -0.116798
2 -0.199115  foo -0.458050 -0.199115
3  0.918646  bar -0.007185 -0.001006
4  1.336830  foo  0.534292  0.268245
5  0.976844  bar -0.773630 -0.570417


在我看来,下面的方式更好:

In [53]: def my_test2(row):
....:     return row['a'] % row['c']
....:

In [54]: df['Value'] = df.apply(my_test2, axis=1)

数据总监 Level1 回答于 在 2018-01-20。
添加评论

您的回答

*代码插入功能已上线
发布您的回答,意味着您同意了我们的 隐私政策服务条款