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

Pandas按列包含指定子串删除行失效问题求助

解决Pandas无法删除包含指定子串行的问题

先说说你现有方法的问题

  • 第一种用isin()的方法完全不适用:isin()是判断整个字符串是否在列表里,而不是判断是否包含子串。如果你的Title不是精确等于'NQR',这个方法根本不会匹配到目标行,自然删不掉。
  • 后面两种str.contains()的方法没生效,大概率是这几个原因:
    1. 大小写不匹配:比如实际数据里是'nqr'、'NQr'这类混合大小写的情况,默认case=True会严格区分大小写,所以匹配不到。
    2. 字符串有空白/不可见字符:比如Title里是' NQR'、'NQR '或者带全角空格,直接匹配'NQR'会失败。
    3. 忘记把过滤结果重新赋值给原DataFrame:如果只是运行过滤代码却没保存结果,原df根本不会改变。

针对性解决方案

1. 先排查数据问题

先打印Title列的唯一值,确认是否有大小写、空格等问题:

print(df['Title'].unique())

2. 忽略大小写匹配

如果是大小写问题,直接在str.contains()里加case=False参数:

# 过滤后重新赋值给df,确保修改生效
df = df[~df['Title'].str.contains('NQR', case=False, na=False)]

3. 先清理字符串再匹配

如果是空白字符问题,先清理Title列的前后空白,再过滤:

# 去除前后空白字符(包括全角空格)
df['Title'] = df['Title'].str.strip()
# 执行过滤并赋值
df = df[~df['Title'].str.contains('NQR', na=False)]

4. 用drop方法直接删除(另一种写法)

如果你习惯用drop方法,也可以这样写:

# 找到包含'NQR'的行索引,直接删除
df.drop(df[df['Title'].str.contains('NQR', case=False, na=False)].index, inplace=True)

注意:inplace=True会直接修改原DataFrame,不需要重新赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:01:05