将过滤器应用于第 1 列,但包括例外情况是第 2 列低于某个值



示例数据:

Val1 Val2
1.  10
1.  12
3.  42
3.  14
5.  12

所以过滤逻辑是这样的:

  1. 如果Val1小于 3,则删除它,除非Val2小于 11

因此,应用此条件后,我的数据集将如下所示:

Val1 Val2
1.  10
3.  42
3.  14
5.  12

有没有简洁的方法可以做到这一点?

删除Val1小于 3 的行 除非Val2小于 11,等于保留Val1>= 3 或Val2<11 的行:

>>> df[(df.Val1 >= 3) | (df.Val2 < 11)]
Val1  Val2
0     1    10
2     3    42
3     3    14
4     5    12

尝试比较两个布尔值:

In [24]: cond1 = df.Val1 < 3
In [25]: cond2 = df.Val2 < 11
df.loc[~(cond1 > cond2)]
Out[29]: 
Val1  Val2
0   1.0    10
2   3.0    42
3   3.0    14
4   5.0    12

它比较两个布尔序列;如果 cond1 为 True,cond2 为 False,则应删除该行,因为它不符合要求。

相关内容

最新更新