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

Pandas处理CSV:定位多列不含指定数值的行及报错解决

解决CSV多列条件筛选的问题

先修复KeyError问题

你当前的Assignments是直接提取了除A/B/C外的子DataFrame,而不是列名列表。data[Assignments]这种写法会把整个DataFrame当作索引去查询,必然触发KeyError。先把Assignments改成目标列的名称集合:

# 正确获取目标列名列表
Assignments = data.columns[~data.columns.isin(['A', 'B', 'C'])]

筛选“未包含20”的行(两种常见场景)

得先明确你要的是哪种结果:

  • 场景1:只要目标列中有一列不等于20,就保留该行
    用any(axis=1)判断每行是否存在不符合条件的列:

    # 筛选目标列至少有一列≠20的行
    filtered_data = data[(data[Assignments] != 20).any(axis=1)]
    
  • 场景2:目标列中所有列都不等于20,才保留该行
    用all(axis=1)判断每行所有目标列都不满足等于20的条件:

    # 筛选目标列全≠20的行
    filtered_data = data[(data[Assignments] != 20).all(axis=1)]
    

扩展条件:排除多个值(20、10、0)

针对两种场景分别处理:

  • 场景1:目标列中只要有一列不在{0,10,20}里,就保留该行
    反向使用isin()配合any(),逻辑更直观:

    # 筛选目标列至少有一列不在指定值中的行
    filtered_data = data[(~data[Assignments].isin([0,10,20])).any(axis=1)]
    
  • 场景2:目标列所有列都不在{0,10,20}里,才保留该行
    用all()确保每行所有目标列都不符合指定值:

    # 筛选目标列全不在指定值中的行
    filtered_data = data[(~data[Assignments].isin([0,10,20])).all(axis=1)]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:15:22