我有一个数据帧,看起来是这样的:

C1 C2
100 10
25 8
67 4
0 4
0 1
67 0

我正在try 应用一个筛选器,该筛选器只在C2中的值大于2的情况下才会删除C1中的0值.目前,我的过滤器给出的输出如下所示:

C1 C2
100 10
25 8
67 4

而我想要的输出是:

C1 C2
100 10
25 8
67 4
0 1
67 0

我目前的过滤器是:

(df['C1'] != 0) & (df['C2'] > 2)

但我也试过

(df['C1'] > 0) & (df['C2'] > 2)

这给了我同样的结果

推荐答案

使用带有两个掩码的boolean indexing:

out = df[~(df['C1'].eq(0) & df['C2'].gt(2))]

或者:

out = df[df['C1'].ne(0) | df['C2'].le(2)]

输出:

    C1  C2
0  100  10
1   25   8
2   67   4
4    0   1
5   67   0

可重现的输入:

df = pd.DataFrame({'C1': [100, 25, 67, 0, 0, 67],
                   'C2': [10, 8, 4, 4, 1, 0]})

Python相关问答推荐

Pandas 除以一列中出现的每个值

Python -根据另一个数据框中的列编辑和替换数据框中的列值

Python plt.text中重叠,包adjust_text不起作用,如何修复?

Odoo -无法比较使用@api.depends设置计算字段的日期

计算相同形状的两个张量的SSE损失

pandas DataFrame GroupBy.diff函数的意外输出

Polars LazyFrame在收集后未返回指定的模式顺序

将整组数组拆分为最小值与最大值之和的子数组

PywinAuto在Windows 11上引发了Memory错误,但在Windows 10上未引发

无法定位元素错误404

如何获取numpy数组的特定索引值?

Django admin Csrf令牌未设置

如何更改groupby作用域以找到满足掩码条件的第一个值?

为什么在FastAPI中创建与数据库的连接时需要使用生成器?

关于两个表达式的区别

Python pint将1/华氏度转换为1/摄氏度°°

如果有2个或3个,则从pandas列中删除空格

Python协议不兼容警告

时长超过24小时如何从Excel导入时长数据

如何在Polars中将列表中的新列添加到现有的数据帧中?