Python 序列的真值是模糊的
这个代码有什么问题?我在数据帧上使用了许多比较lambda函数,但这个函数返回Python 序列的真值是模糊的,python,pandas,Python,Pandas,这个代码有什么问题?我在数据帧上使用了许多比较lambda函数,但这个函数返回ValueError:(“序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all()。”,u“发生在索引2上”)error 我搜索了一下,发现以前有很多关于它的问题,但没有一个符合我的问题 我的代码: def Return(close,pClose): i = ((close - pClose) / close) * 100 if (i > 0):
ValueError:(“序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all()。”,u“发生在索引2上”)
error
我搜索了一下,发现以前有很多关于它的问题,但没有一个符合我的问题
我的代码:
def Return(close,pClose):
i = ((close - pClose) / close) * 100
if (i > 0):
return 1
if (i < 0):
return 0
df['return'] = df.apply(lambda y:Return(close=df['Close'], pClose=df['pClose']),axis=1)
def返回(关闭,pClose):
i=((关闭-关闭)/关闭)*100
如果(i>0):
返回1
如果(i<0):
返回0
df['return']=df.apply(lambda y:return(close=df['close'],pClose=df['pClose']),axis=1)
代码的问题是您将数据帧的整列传递给函数:
df.apply(lambda y:Return(close=df['Close'], pClose=df['pClose']),axis=1)
在函数中,您正在计算一个新值i,它实际上是一列:
i = ((close - pClose) / close) * 100
在比较语句中,则无法决定如何评估您尝试执行的操作,因为它获取一列作为输入:
if (i > 0):
所以我认为你想要的是:
df['return'] = df.apply(lambda y:Return(close=y['Close'], pClose=y['pClose']),axis=1)
代码的问题在于将数据帧的整列传递给函数:
df.apply(lambda y:Return(close=df['Close'], pClose=df['pClose']),axis=1)
在函数中,您正在计算一个新值i,它实际上是一列:
i = ((close - pClose) / close) * 100
在比较语句中,则无法决定如何评估您尝试执行的操作,因为它获取一列作为输入:
if (i > 0):
所以我认为你想要的是:
df['return'] = df.apply(lambda y:Return(close=y['Close'], pClose=y['pClose']),axis=1)
对我忘了在
['close']
和['pClose']
之前添加y
!!我被它吓了一跳!我执行了许多类似这样的lambda函数,但这一个返回一个错误!谢谢你是的!!!我忘了在['close']
和['pClose']
之前添加y
!!我被它吓了一跳!我执行了许多类似这样的lambda函数,但这一个返回一个错误!非常感谢。