如何将含多列年份索引的宽表转换为年份单独成列的长表
宽表转长表实现方案
以下是三种主流工具的实现方式,可按需选择:
Python(pandas)
使用内置的melt方法即可快速完成转换,示例代码如下:
import pandas as pd # 替换为你自己的宽表数据读取逻辑,比如pd.read_excel/ pd.read_csv df_wide = pd.DataFrame({ "Country": ["Ecuador", "Canada"], "2020": ["Value1", "Value1"], "2021": ["Value2", "Value2"] }) df_long = df_wide.melt( id_vars = "Country", var_name = "Year", value_name = "Index" )
输出的df_long完全符合你要求的Country、Year、Index三列结构。
Excel
通过Power Query操作无需写代码:
- 选中全部宽表数据,点击「数据」选项卡→「从表格/区域」进入Power Query编辑器
- 选中Country列,右键点击「逆透视其他列」
- 将生成的「属性」列重命名为Year,「值」列重命名为Index
- 点击「关闭并上载」即可导出结果到工作表
R语言
使用tidyr包的pivot_longer函数实现:
library(tidyr) df_long <- df_wide %>% pivot_longer( cols = -Country, names_to = "Year", values_to = "Index" )
内容的提问来源于stack exchange,提问作者Aiden Blake
相关产品推荐
相关产品推荐

