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

pandas调用unstack('Medal')触发KeyError报错问题求助

错误原因

你触发KeyError的核心原因是:当前分组后的结果只有单级索引(仅Team字段作为索引),不存在名为Medal的索引层级,unstack自然无法找到对应层级做拆分。
你之前的写法atl.groupby('Team')['Medal'].count()是仅按国家(Team)分组统计总奖牌数,结果的索引只有Team一列,值是每个国家的总奖牌数量,完全没有保留奖牌类型的维度信息,自然无法拆分金银铜的分布。

正确实现步骤

  • 第一步先过滤掉Medal为空的记录,避免统计到未获得奖牌的参赛数据
  • 分组时同时传入Team和Medal两个维度,让结果生成双层索引:第一层为国家,第二层为奖牌类型
  • 此时再调用unstack('Medal')就能把奖牌类型拆分为不同列
  • 如果部分国家没有某类奖牌,可加fill_value=0把空值填充为0,避免绘图异常

可运行代码示例

# 过滤出获得奖牌的记录
medal_data = atl[atl['Medal'].notna()]
# 双维度分组+统计+拆分奖牌类型+取奖牌总数前20的国家+绘图
medal_data.groupby(['Team', 'Medal'])['Medal'].count()\
          .unstack('Medal', fill_value=0)\
          .nlargest(20, columns=['Gold', 'Silver', 'Bronze'])\
          .plot(kind='bar', figsize=(10, 10))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:54:04