如何在pandas中删除全表任意列含特定字符串的行
解决方案
如果你使用pandas处理表格数据,可以直接用原生向量化操作实现需求,无需提前将目标值转为NaN,执行效率远高于逐行遍历:
# 导入pandas后读取你的数据,此处假设你的原始DataFrame变量名为df df = df[~df.isin(["refused"]).any(axis=1)]
代码逻辑说明
df.isin(["refused"]):逐单元格检查值是否为目标值refused,返回与原DataFrame结构完全一致的布尔值表.any(axis=1):按行聚合判断,只要该行存在任意一个True(即出现了目标值)就返回True,标记所有需要删除的行~:对布尔值取反,筛选出所有不含目标值的行
该方法默认不会匹配NaN值,你示例中含NaN的行也会正常保留,完全符合你的需求。如果需要同时匹配多个需要排除的值,只需要把所有目标值放入isin的列表参数即可,例如要同时删除含refused和unknown的行,写法改为df.isin(["refused", "unknown"])即可。
内容的提问来源于stack exchange,提问作者Riley
相关产品推荐
相关产品推荐

