我正在尝试过滤掉我的数据框中的某些行,这些行允许两列的两个值组合。例如,列“A”和“B”可以是“A”和“A”。 0和'B'> 0或'A'< 0和'B'< 0.我想要过滤的任何其他组合。
我尝试了以下
model = unicode(Country._meta)
这给了我一个错误:df = df.loc[(df['A'] > 0 & df['B'] > 0) or (df['A'] < 0 & df['B'] < 0)]
我知道这可能是一个非常微不足道的问题,但我找不到任何解决方案,说实话,我无法弄清楚我的方法有什么问题。
答案 0 :(得分:2)
您需要一些括号并为pandas格式化(和/或成为&amp; / |):
df = df[((df['A'] > 0) & (df['B'] > 0)) | ((df['A'] < 0) & (df['B'] < 0))]
请记住这是做什么的 - 你只是构建一个巨大的[True,False,True,True]列表并将其传递到df索引中,告诉它保留每一行取决于它是否获得True或相应列表中的假。