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

Python Pandas:如何删除DataFrame中包含特定值的所有行(代码调试)

解决DataFrame删除含指定值行的问题

我来帮你搞定这个问题!你的需求是删除所有包含999.9值的行,但当前代码的逻辑刚好搞反了,咱们一步步理清:

原代码的问题

你写的(df1 != 999.9).any(1)会生成一个布尔序列,逻辑是:只要某一行里有任意一个元素不等于999.9,就标记为True。这意味着它会保留那些"不全是999.9"的行,但你想要的是删除"任何一个元素是999.9"的行,也就是只保留"所有元素都不等于999.9"的行。

正确的解决方案

这里有两种简洁的写法,都能实现你的需求:

方法1:用all()替代any()

all(axis=1)会检查每一行的所有元素是否都满足条件,正好符合我们"全不是999.9才保留"的要求:

import pandas as pd

df1 = pd.DataFrame({'a':[999.9,999.9,1,3,2], 'b':[999.9,1,999.9,1, 2]})
df1 = df1.loc[(df1 != 999.9).all(axis=1)]
print(df1)

方法2:反向筛选(标记要删除的行再取反)

先找出所有包含999.9的行,然后用~取反保留剩下的行:

import pandas as pd

df1 = pd.DataFrame({'a':[999.9,999.9,1,3,2], 'b':[999.9,1,999.9,1, 2]})
df1 = df1[~df1.isin([999.9]).any(axis=1)]
print(df1)

运行结果

两种方法都会输出你期望的结果:

a    b
3  3.0  1.0
4  2.0  2.0

也就是成功删除了所有包含999.9的行(原DataFrame的前3行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:57:47