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
相关产品推荐
相关产品推荐


