系列的真值是模糊的python数据帧

时间:2017-01-09 21:13:26

标签: python pandas dataframe

我是python pandas的新手。我构建了一个小函数,现在我总是得到以下错误:

  

系列的真值是模棱两可的。使用a.empty,a.bool(),   a.item(),a.any()或a.all()。

我知道这个错误已经在其他问题中讨论了,但是我并没有真正得到我应该做的不同以及错误是如何发生的。

所以这是我的简单功能:

def relativeWinner():
    if df['GoldSummer'] >0 & df['GoldWinter'] >0:
        df['diff'] = abs(df['GoldSummer'] - df['GoldWinter'])/(df['GoldSummer'] + df['GoldWinter'])
    return df['diff'].idxmax()

有谁能告诉我这里有什么不对,以及我该如何解决它?

1 个答案:

答案 0 :(得分:1)

至于为什么会出现这个特定问题,请参阅以下文章:

Difference between 'and' (boolean) vs. '&' (bitwise) in python. Why difference in behavior with lists vs numpy arrays?

关于您的代码,请尝试以下方法:

df['diff'] = [abs(tup[0] - tup[1]) / tup[0] if (tup[0] > 0) and (tup[1] > 0) else 'NaN' for tup in zip(df['GoldSummer'], df['GoldWinter'])]