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

Pandas:删除DataFrame中指定列不含指定文本的对应行的实现方法

Pandas筛选包含指定值的行实现方案

原有代码的问题

  • 类型判断错误:type(column) == object判断的是列名的类型,而非列的数据类型,正确写法应该是判断df[column].dtype == object
  • 逻辑错误:循环逐列筛选会不断覆盖DataFrame结果,最终只会保留最后一列符合条件的行,而非整行任意列符合条件的行
  • 运算符误用:直接对两个DataFrame使用|运算符不符合布尔索引的语法规范,应该对布尔筛选条件做或运算

正确实现代码

方案1:精确匹配单元格值为Keep或Save(适配你的示例需求)

该方案仅当单元格值完全等于Keep或Save时才会保留对应行,代码简洁效率最高:

# 构造需要匹配的关键词列表
keywords = ['Keep', 'Save']
# 筛选任意列包含关键词的行
filtered_df = df[df.isin(keywords).any(axis=1)]

方案2:模糊匹配单元格包含Keep或Save子串

如果需求是只要单元格内容包含这两个字符串就算符合条件,使用如下写法:

keywords = ['Save', 'Keep']
# 仅对文本类型列做包含匹配,任意列符合就保留该行
mask = df.select_dtypes(include='object').apply(lambda x: x.str.contains('|'.join(keywords), na=False)).any(axis=1)
filtered_df = df[mask]

参数说明:

  • select_dtypes(include='object') 只筛选文本类型列,避免数值列做字符串匹配报错
  • na=False 遇到空值直接返回False,不会抛出异常
  • any(axis=1) 表示整行只要有一个列符合条件就返回True,保留该行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:42:03