Python中如何删除DataFrame指定列含特定文本的行?

具体实现方案
- 先明确判定逻辑:需要移除的是
definition列里**值为文本字符串"None"**的行,这类场景不能直接用pandas自带的dropna()——因为dropna()只会识别Python None、pandas NaN这类原生空值,根本匹配不上字符串形式的"None"。 - 完全匹配场景:如果列里所有的"None"文本都没有多余空格、和字符串"None"完全一致,直接用布尔索引筛选就行,执行代码:
df_filtered = df[df['definition'] != "None"] - 非标准格式兼容场景:如果部分行的"None"前后带空格、大小写不统一(比如"None "、"none"),先对列值做清洗再判定,避免漏删,执行代码:
df_filtered = df[~df['definition'].astype(str).str.strip().str.fullmatch("None", case=False, na=False)]
这里用~对匹配结果取反,直接筛掉所有符合判定规则的行;加na=False是为了兼容列里原本的原生空值,不会因为类型不一致报错。 - 校验步骤:过滤完成后可以跑一行
df_filtered['definition'].value_counts(),快速确认列里没有残留值为"None"的行。
内容的提问来源于stack exchange,提问作者Pritam Deka
相关产品推荐
相关产品推荐

