当使用具有以下数据帧的多个列时,Pandas apply函数有一些问题
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')
我不明白这个消息,我正确地定义了这个名字。
我非常感谢你在这个问题上的帮助
更新
谢谢你的帮助。我在代码中确实犯了一些语法错误,索引应该放在''。但是,我仍然会遇到同样的问题,使用更复杂的函数,例如:
def my_test(a):
cum_diff = 0
for ix in df.index():
cum_diff = cum_diff + (a - df['a'][ix])
return cum_diff
假设我们要将add5函数应用于DataFrame df的列“a”和“b”
似乎你忘了你的字符串
''
。顺便说一句,在我看来,以下方式更为优雅:
如果您只想计算(a列)%(b列),则不需要
apply
,直接计算即可:相关问题 更多 >
编程相关推荐