Pandas使用rename重命名列时报KeyError但列确实存在如何解决?
报错原因
核心原因是列名存在肉眼不可见的隐藏字符,常见为列名前后的空格、制表符、换行符。print(df.columns)输出时不会特殊标记这类隐藏字符,因此你会误判列名完全匹配,实际执行重命名时字符串匹配失败就会抛出KeyError。
小概率场景为你执行重命名操作的DataFrame对象和打印列信息的DataFrame不是同一个,比如中间做过切片、赋值、过滤操作重置了df变量,导致待操作的df确实不存在目标列。
解决方法
- 先统一清理所有列名的隐藏空白字符:
# 去除所有列名首尾的空格、制表符、换行符 df.columns = df.columns.str.strip()
- 清理完成后再执行重命名操作即可正常运行:
df.rename(columns = {'Long Name 1':'Court'}, inplace = True)
如果清理后仍报错,可以通过repr函数打印列名的原始字符内容,定位特殊字符:
# 输出所有列名的原始字符串表示,不可见字符会被转义展示 for col in df.columns: print(repr(col))
找到Long Name 1对应的实际原始列名,替换rename方法中字典的key即可。
内容的提问来源于stack exchange,提问作者unclegood
相关产品推荐
相关产品推荐

