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

使用pandas dropna(subset=['C'])时触发KeyError:['C']报错如何解决

问题成因

报错的核心原因是CSV表头的列名前带有多余空格,pandas默认读取时会原样保留列名:你定义的CSV表头为A, B, C, D,每个逗号分隔符后都有一个空格,实际读入DataFrame后的列名为'A'、' B'、' C'、' D'(B/C/D列名前都带一个前置空格)。此时传入subset=['C']查找名为'C'的列时,pandas匹配不到对应列,就会抛出KeyError: ['C']。
可以执行print(df.columns.tolist())快速验证,输出会直接显示列名带前置空格的问题。

解决方法

根据使用场景选以下任意一种方案即可:

  • 读入CSV时自动清理分隔符后的空格:调用read_csv时加入skipinitialspace=True参数,这是最推荐的方案,从读入环节就避免列名带空格的问题,后续所有列操作都不会受多余空格影响。
    修正后的读入代码:
    df = pd.read_csv(StringIO(csv_data), skipinitialspace=True)
    
  • 已读入数据后批量清理列名空格:如果不想重新读入数据,可以直接对列名做首尾空白字符去除处理:
    df.columns = df.columns.str.strip()
    
  • 直接匹配带空格的列名:临时调试可以直接传入带前置空格的列名df.dropna(subset=[' C']),但不推荐长期使用,后续写代码时很容易因为忘记空格存在反复触发同类报错。

修正后执行df.dropna(subset=['C'])就能正常删除C列存在空值的行,输出结果如下:

A     B     C    D
0   1.0   2.0   3.0  4.0
2  10.0  11.0  12.0  NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:27:13