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

Python pandas按列值删除记录时出现KeyError报错问题求解

问题原因分析

第一个报错 KeyError: True 的原因

你写的过滤语句 cm9_list = cm9_list[cm9_list.columns[0] != 'nan'] 中,cm9_list.columns[0] != 'nan' 是布尔判断表达式,返回值为True或False。把布尔值传入DataFrame的方括号索引时,Pandas会将其识别为列名去检索,你的表中不存在名为True的列,因此触发该报错。

第二个报错 KeyError: 'word' 的核心原因

你修改列名的方式不符合Pandas的规范:cm9_list.columns.values[0] = 'word' 是直接修改Columns Index底层的numpy数组值,但Pandas的Index对象设计为不可变类型,直接修改底层values不会更新Pandas内部的列名映射缓存,就会出现“打印列名显示有word,但实际检索不到”的矛盾情况。

修复步骤
  1. 先正确修改列名,不要直接操作columns.values,选择以下任意一种正规方式即可:
# 方式1:直接给columns属性赋值完整列名列表
cm9_list.columns = ['word', 'frequency']

# 方式2:用rename方法定向修改指定列名,兼容性更强
cm9_list = cm9_list.rename(columns={
    cm9_list.columns[0]: 'word',
    cm9_list.columns[1]: 'frequency'
})
  1. 再过滤掉word列的空值,注意如果是真实的NaN缺失值(不是字符串'nan'),需要用Pandas内置的空值判断方法,避免漏判:
# 如果是真实NaN缺失值,用这个
cm9_list = cm9_list[cm9_list['word'].notna()]

# 如果确实是字符串类型的'nan',用这个
cm9_list = cm9_list[cm9_list['word'] != 'nan']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:06:01