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

在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:05:22