在R语言中将数据框转换为以年份为索引的宽格式
解决方案:将长格式数据框转换为宽格式并提取年份索引
假设你的数据框名为df,可以通过以下步骤实现需求:
步骤1:从行索引中提取完整年份
拆分行索引中的年份后缀,转换为2020、2021这类完整年份格式:
# 拆分索引,提取年份部分并拼接为完整年份 df['Year'] = '20' + df.index.str.split('-').str[1] # 将年份转为整数类型 df['Year'] = df['Year'].astype(int)
步骤2:转换为目标宽格式
使用pivot方法将国家转为列、年份转为行索引,填充对应数值:
wide_df = df.pivot(index='Year', columns='Country', values='Value')
完整可运行示例
import pandas as pd # 模拟你当前的数据框结构 data = { 'Country': ['Italy', 'Italy', 'Spain', 'Spain'], 'Value': [1246, 230, 64829, 11320] } df = pd.DataFrame(data, index=['ITA-20', 'ITA-21', 'SPA-20', 'SPA-21']) # 提取年份 df['Year'] = '20' + df.index.str.split('-').str[1] df['Year'] = df['Year'].astype(int) # 转换为宽格式 wide_df = df.pivot(index='Year', columns='Country', values='Value') print(wide_df)
运行后输出结果:
Italy Spain Year 2020 1246 64829 2021 230 11320
补充说明
- 如果行索引中的年份是四位格式(比如
ITA-2019),直接提取第二部分即可:df.index.str.split('-').str[1].astype(int) - 若存在同一国家同一年份的重复数据,可改用
pivot_table并指定聚合函数处理,例如:df.pivot_table(index='Year', columns='Country', values='Value', aggfunc='sum')
内容的提问来源于stack exchange,提问作者user20332904
相关产品推荐
相关产品推荐

