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

Python中如何删除DataFrame多列含指定字符串的记录?

解决多列删除含指定字符串记录的问题

首先说你的代码报错原因:

  • 多列索引方式错误:Pandas中选择多列必须用双层方括号包裹列名列表,也就是df1[['Size','Current Ver','Android Ve']],你用的单层方括号加逗号属于元组索引,会直接引发错误。
  • 多列str.contains的返回值处理错误:直接对多列调用str.contains会得到一个布尔型DataFrame,直接和==False比较后仍是二维布尔矩阵,无法直接用于行筛选,必须先把每行的结果合并为单个布尔值。

下面给你两种常用处理方式,按需选择:

方式一:删除任意指定列含目标字符串的行

只要某一行的Size/Current Ver/Android Ve任意一列存在Varies with device,就删除该行:

# 生成布尔矩阵,标记每个单元格是否包含目标字符串
mask = df1[['Size', 'Current Ver', 'Android Ve']].apply(lambda col: col.str.contains('Varies with device'))
# ~mask.any(axis=1) 表示保留所有指定列都不含目标字符串的行
df2 = df1[~mask.any(axis=1)]

方式二:删除所有指定列都含目标字符串的行

仅当某一行的三个指定列全部是Varies with device时才删除该行:

mask = df1[['Size', 'Current Ver', 'Android Ve']].apply(lambda col: col.str.contains('Varies with device'))
# ~mask.all(axis=1) 表示保留不是所有指定列都含目标字符串的行
df2 = df1[~mask.all(axis=1)]

补充小技巧:如果需要检查DataFrame所有列是否存在目标字符串,不用指定列名列表,直接写df1.apply(lambda col: col.str.contains('Varies with device'))即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:52:09