2016-10-25 135 views
0

我想两列的值用下面的代码比较:在大熊猫比较两列

if df['predicted_spread'] > df['vegas_spread']: 
total_bet += 1 

它返回以下错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

任何想法如何,我可以解决这个问题?

+0

看看这个:http://stackoverflow.com/questions/10062954/valueerror-the-truth-value-of-an-array-with-more-than-one-element-is-ambiguous – wwl

+0

你应该首先检查你的逻辑,你想达到什么目的? 'df ['predicted_spread']> df ['vegas_spread']'返回一个逻辑系列,如果需要一个逻辑值的话。 – Psidom

回答

3

首先,df['predicted_spread'] > df['vegas_spread']的结果也是由布尔值组成的系列,例如[True, True, False, ...],因此您会收到错误消息The truth value of a Series is ambiguous

那么你应该怎么做?这取决于你的应用程序。

(1)如果你的目的是要算的True条件的号码,然后

total_bet = sum(df['predicted_spread'] > df['vegas_spread']) 

(2)如果你的目的是要提高total_betdf['predicted_spead'] > df['vegas_spread']都比较 - 是真的,那么

if (df['predicted_spread'] > df['vegas_spread']).all() is True: 
    total_bet += 1 

(3)如果total_bet也是矢量,和你的意图是记录每一个比较 - ,然后

total_bet = total_bet + (df['predicted_spread'] > df['vegas_spread']) 

我想选项(1)是你需要的。谢谢。