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

pandas plot绘图无法将DataFrame索引设为x轴报KeyError问题

pandas绘图KeyError问题解答

关于报错信息中的\n

\n是通用文本换行转义字符,仅用于长文本输出时折行显示——因为报错中打印的索引列表长度有135个元素,控制台输出时自动插入\n做换行,没有特殊业务含义,和报错核心原因无关,无需特殊处理。

报错根因

你的绘图代码存在两处问题:

  • x参数传值逻辑错误:df.plot()的x参数需要传入作为x轴的列名(字符串类型),你直接传入了df.index整个索引对象(包含135个日期值的序列),pandas会把这一长串日期全部当作要查找的列名,自然会抛出「这些值不在列索引中」的KeyError。实际上pandas默认就会使用DataFrame的行索引作为x轴,不需要手动给x参数传值。
  • 列名拼写错误:你在y参数中指定了"X Index"列,但你给出的DataFrame里只有A/B/C/D四个Index列,不存在X Index,不存在的列名同样会触发KeyError。
  • 额外注意:你的DataFrame是两级列索引结构,第一级是A Index/B Index这类名称,第二级全为PX_LAST,选列时需要匹配多级索引的结构。

报错参考截图:
报错截图

正确绘图方法

如果不需要绘制不存在的X Index列,可参考如下代码实现绘图:

方法1:先简化多级列再绘图

先把两级列索引简化为单层,再调用绘图方法,代码可读性更高:

# 取第一级列名替换原多级列索引
df.columns = df.columns.get_level_values(0)
# 默认以行日期索引为x轴,指定需要绘制的列即可
df.plot(y=["A Index", "B Index", "D Index"])

方法2:直接选中多级列绘图

如果需要保留原多级列结构,可以直接指定多级列的元组路径选中要绘制的列,再调用plot:

df[[
    ("A Index", "PX_LAST"),
    ("B Index", "PX_LAST"),
    ("D Index", "PX_LAST")
]].plot()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:24:32