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

Python使用pandas读取CSV文件报KeyError 'ums'如何修复

pandas读取CSV触发KeyError 'ums'问题修复

报错根因

出现这个问题有两个核心原因:

  • 你的CSV文件用不定数量的空白做列分隔符,列名ums前后带有肉眼不可见的前置/后置空格,pandas读取后实际列名不是纯'ums'(可能是' ums'或'ums '),直接传入'ums'做键匹配自然会触发KeyError。
  • 原绘图代码存在语法错误:ax1.bar(dataframe1.index.dataframe1['ums'])一行把柱状图的x、y轴参数写连了,中间缺失逗号,就算KeyError修复后这行也会抛出语法异常。

修复步骤

  1. 读取CSV时适配空白分隔符,同时清理列名前后的隐藏空白
    给read_csv传入sep=r'\s+'参数适配任意长度的空白分隔符,读取完成后用str.strip()清理所有列名的前后空白,从根源解决列名匹配失败的问题。
  2. 修正柱状图绘制代码的参数错误,在x轴参数(索引)和y轴参数(ums列值)之间补上逗号。

修复后完整代码

import pandas as pd
import matplotlib.pyplot as plt

# 读取CSV文件,适配空白分隔符,设置第一列为索引
df = pd.read_csv(
    r'C:\Users\User\Desktop\Dataset2.csv',
    index_col=0,
    sep=r'\s+'
)
# 清理所有列名的前后空白字符
df.columns = df.columns.str.strip()
print(df)

# 按ums列降序排序
dataframe1 = df.sort_values('ums', ascending=False)

fig = plt.figure(figsize=(20,5))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)

# 修复bar参数缺失逗号的语法错误
ax1.bar(dataframe1.index, dataframe1['ums'])
ax1.set_xticklabels(dataframe1.index, rotation=60, horizontalalignment='right', fontsize=12)

ax1.set_title('Title', fontsize=22)
ax1.set_ylabel('Text')

plt.show()

验证方法

如果想确认列名的隐藏空格问题,可以在读取文件后加一行代码打印列名的原始格式,就能看到带空格的真实列名:

print([repr(col) for col in df.columns])

执行后如果输出里的ums列名带引号内的空格,就说明确实是列名空白导致的KeyError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:36:43