我正在尝试过滤掉数据框中的某些行,这些行允许两列的值的两种组合。例如,列 'A' 和 'B' 可以是 'A' > 0 和 'B' > 0 或 'A' < 0 和 'B' < 0。我想过滤的任何其他组合。
我尝试了以下
df = df.loc[(df['A'] > 0 & df['B'] > 0) or (df['A'] < 0 & df['B'] < 0)]
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误: 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))]
Run Code Online (Sandbox Code Playgroud)
请记住这是在做什么 - 您只是在构建一个巨大的 [True, False, True, True] 列表并将其传递到 df 索引中,告诉它根据它是 True 还是 False 保留每一行在相应的列表中。
| 归档时间: |
|
| 查看次数: |
8198 次 |
| 最近记录: |