我正在尝试过滤掉数据框中的某些行,以允许两列的值的两种组合。例如,列'A'和'B'可以只是'A'> 0和'B'> 0或'A'
我尝试了以下
df = df.loc[(df['A'] > 0 & df['B'] > 0) or (df['A'] < 0 & df['B'] < 0)]
这给了我一个错误:
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我知道这可能是一个非常琐碎的问题,但是老实说,我找不到任何解决方案,而且我也无法弄清楚我的方法师的问题所在。
最佳答案
您需要一些括号并设置大熊猫的格式(和/或变成&/ |):
df = df[((df['A'] > 0) & (df['B'] > 0)) | ((df['A'] < 0) & (df['B'] < 0))]
请记住这是做什么的-您只是建立一个[True,False,True,True]的庞大列表,并将其传递到df索引中,告诉它根据它是True还是False保留每一行。在相应的列表中。
关于python - Pandas :按OR条件索引行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37330880/