同时基于两列过滤行

时间:2020-09-20 12:46:36

标签: python pandas

我正在尝试根据两行值过滤掉行。我看到的大多数问题的解决方案都使用以下方法:

df.loc[(df['A'] != 'yes') & (df['B'] != 'no')]

这将过滤A和B不同于一个值的行,我要做的是过滤那些具有我要过滤的值的行,例如:

Player | action | result
1          A        B
2          B        A
3          C        A
4          A        B
5          A        C

在此示例中,我想删除具有操作A和结果B的行。使用上面的示例,它将删除等于A的动作和结果等于B的行。我想删除结果为A的动作B

预期输出:

  Player | action | result
    2          B        A
    3          C        A
    5          A        C

在这里,我可能会引起很多困惑,这很简单。无论如何,任何帮助将不胜感激!

致谢

2 个答案:

答案 0 :(得分:4)

请您尝试以下。

import pandas as pd
df2[~((df2["action"]=='A') & (df2["result"]=='B'))]

数据帧的输出如下。

  Player action result
1   2    B    A
2   3    C    A
4   5    A    C

答案 1 :(得分:2)

我想这就是你想要的

pd.concat([df[(df['action'] == 'A') & (df['result'] != 'B')],df[(df['action'] != 'A')]])