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

如何透视Pandas DataFrame:将年份设为索引、指标设为列

解决世界银行澳大利亚数据的透视问题

你的核心需求是把统计指标为行、年份为列的DataFrame转换成年份为行索引、统计指标为列的结构,之前用df.pivot(columns='Indicator Code', index=['1960'])出错是因为指定的索引仅为1960年列,而非所有年份。以下是两种可靠的解决方法:

方法一:直接转置(适用于已清理的规整数据)

如果你的DataFrame结构是:行是统计指标(包含Indicator Code列),列是1960-2022的年份,直接转置即可:

# 将Indicator Code设为行索引,避免转置后成为普通列
df.set_index('Indicator Code', inplace=True)
# 转置数据,此时行自动变为年份,列变为指标代码
df_final = df.transpose()
# 可选:重置索引并将年份列命名为Year(按需操作)
df_final = df_final.reset_index().rename(columns={'index': 'Year'})
# 若需要将年份设为行索引,执行此步
df_final.set_index('Year', inplace=True)

方法二:Melt+Pivot(适用于需要更灵活处理的场景)

如果数据存在冗余列,或者需要先将宽格式转成长格式再透视,用melt配合pivot更稳妥:

# 将所有年份列拆解为「年份-数值」的长格式,保留Indicator Code作为指标标识
df_melted = df.melt(id_vars='Indicator Code', var_name='Year', value_name='Value')
# 透视:以Year为行索引,Indicator Code为列,填充对应数值
df_final = df_melted.pivot(index='Year', columns='Indicator Code', values='Value')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:46:10