You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas多列条件筛选问题:如何仅移除两列同时等于指定值的行

移除Pandas DataFrame中多列同时满足条件的行

你遇到的问题很典型——连续两次过滤的逻辑和你实际需求不符啦!

先看你的原始数据:

Col1 Val1 Val2 Val3
a    v1   v1   z1
b    v1   v3   x1
c    v2   v2   x2

你之前写的代码:

df = df[df['Val1'] != 'v1']
df = df[df['Val2'] != 'v1']

这其实是在筛选**Val1不等于'v1' 并且 Val2不等于'v1'**的行,所以行b(Val1是v1)和行a都会被过滤掉,最后只剩行c,这和你要的结果不符。

你的真实需求是只移除Val1和Val2同时等于'v1'的行,也就是保留所有不满足「Val1='v1'且Val2='v1'」的行,这里可以用两种写法实现:

方法1:对复合条件取反

用~符号取反,结合&表示逻辑与(注意括号不能少,不然会运算优先级出错):

df = df[~((df['Val1'] == 'v1') & (df['Val2'] == 'v1'))]

方法2:利用德摩根定律转换条件

根据逻辑运算规则,「不是(A且B)」等价于「非A或非B」,所以也可以这么写:

df = df[(df['Val1'] != 'v1') | (df['Val2'] != 'v1')]

两种方法运行后,得到的结果都是你想要的:

Col1 Val1 Val2 Val3
b    v1   v3   x1
c    v2   v2   x2

内容的提问来源于stack exchange,提问作者Zanam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 22:44:07