数据框基于两列的值删除行

时间:2018-11-06 06:10:01

标签: python pandas dataframe

我想删除一些包含离群值的行,但是我还有另一个约束,就是只有在A列中该行的值不是'Move-UP','MOVE-DOWN'的情况下,我才能删除该行。 (离群值去除规则是B列的平均值+/- 3 *标准差)。

数据集如下所示(实际数据集中还有很多行):

    A                B
1  OK              0.34
2  OK              0.587
3  MOVE-UP         1.8
4  OK              -2.3
5  MOVE-DOWN       0.4
6  OK              0.35

让我们假设第二行是异常值,可以删除它,因为A中的值不是'Move-UP','MOVE-DOWN',但是如果第三行是异常值,则我不能删除它,因为A中的值是上移。

简而言之,我需要从B列中删除异常值,但有一个约束条件:切勿触摸A列中值为“ MOVE-UP”和“ MOVE-DOWN”的行。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

我认为您需要过滤掉列Move-UP中不包含值MOVE-DOWNA的行。并且如果离群值是通过使用isin将其与另一个条件进行链式链接而定义的:

L = [0.587, 1.8]
df1 = df[~df['A'].isin(['Move-UP','MOVE-DOWN']) & df['B'].isin([L])]