看起来我可以对DataFrame应用一些函数而没有问题,但是其他的会给出一个值错误。
dates = pd.date_range('20130101',periods=6)
data = np.random.randn(6,4)
df = pd.DataFrame(data,index=dates,columns=list('ABCD'))
def my_max(y):
return max(y,0)
def times_ten(y):
return 10*y
df.apply(lambda x:times_ten(x)) # Works fine
df.apply(lambda x:my_max(x)) # Doesn't work
第一个应用程序正常运行,第二个则会生成以下错误信息:
ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', u'occurred at index A')
我知道可以通过其他方式(例如,通过df[df<0]=0)生成“max(df,0)”,因此我不是在寻找解决这个特定问题的方法。相反,我对为什么上面的应用程序不起作用感兴趣。
如果只有一个可迭代参数,则返回其最大项。如果有两个或更多参数,则返回最大的参数。
因此,它在这种情况下无法理解pandas Series或numpy数组,这就是为什么您应该使用可以理解它们的东西。 - EdChum