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

如何删除pandas DataFrame中FEATURE列以[NA]开头的行

问题原因分析

你之前两段代码无效的原因分别如下:

  • 第一段df[~df.FEATURE.str.contains("[NA]")]:str.contains默认开启正则匹配,[NA]在正则语法中是字符集匹配规则,只会匹配单个字符N或者A,完全无法匹配[NA]这个完整的字符串前缀;另外如果执行后没有重新赋值给df,原DataFrame也不会发生变化。
  • 第二段df.drop(df['FEATURE'].str.startswith('[NA]')):df.drop()方法接收的参数是要删除的行索引/列名,你传入的是一个布尔类型的Series,完全不符合参数要求,自然不会生效。

正确实现方式

方案1:使用startswith(最适合前缀匹配场景)

# na=False 是为了避免FEATURE列为空时返回NaN导致索引报错,匹配成功的行会被过滤掉
df = df[~df['FEATURE'].str.startswith('[NA]', na=False)]

如果希望直接修改原DataFrame,也可以用drop写法:

df.drop(df[df['FEATURE'].str.startswith('[NA]', na=False)].index, inplace=True)

方案2:使用contains匹配

如果要坚持用str.contains,需要关闭正则匹配或者转义特殊字符:

# 方式1:关闭正则匹配,把[NA]当成普通字符串处理
df = df[~df['FEATURE'].str.contains('[NA]', regex=False, na=False)]

# 方式2:正则转义方括号,^限制从开头匹配,更贴合你的需求
df = df[~df['FEATURE'].str.contains(r'^\[NA\]', na=False)]

注意:所有操作默认返回新的DataFrame,必须赋值给原变量或者加inplace=True才会修改原数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:57:04