使用Matplotlib绘制分组后DataFrame柱状图出现Months列KeyError的原因
KeyError: 'Months' 错误原因及解决方法
问题场景
执行以下代码绘制月度销量柱状图时,触发了KeyError: 'Months':
result = all_data.groupby("Months").sum() # 输出的result数据结构如下: # Quantity Ordered Price Each Sales # Months # 1 10903 1811768.38 1822256.73 # 2 13449 2188884.72 2202022.42 # 3 17005 2791207.83 2807100.38 # ...(其余月份数据省略) plt.bar(result["Months"], result["Sales"]) plt.show()
错误原因
使用groupby("Months").sum()分组聚合时,Pandas默认会将用于分组的字段Months设置为DataFrame的索引,而非保留为普通列。此时result的列仅包含Quantity Ordered、Price Each、Sales三种,直接通过result["Months"]访问会触发KeyError,因为该名称已不再对应任何列。
解决方法
有两种常用的修复方式:
- 方式一:分组时保留Months为普通列
在groupby中添加as_index=False参数,让分组字段保持为列而非索引:result = all_data.groupby("Months", as_index=False).sum() plt.bar(result["Months"], result["Sales"]) plt.show() - 方式二:直接访问索引获取月份数据
既然Months是索引,直接通过result.index获取月份值即可:plt.bar(result.index, result["Sales"]) plt.show()
内容的提问来源于stack exchange,提问作者Sashank Joshi
相关产品推荐
相关产品推荐

