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

Python DataFrame 格式转换:将长表数据转换为指定宽表结构

将长格式DataFrame转换为宽格式的实现方法

你可以用Pandas的pivot()方法快速完成长表到宽表的转换,以下是完整代码示例:

步骤1:构造原始长表数据

首先导入Pandas并创建对应的数据结构:

import pandas as pd

# 原始长表数据
raw_data = {
    '国家或地区': ['Afghanistan', 'India', 'Pakisthan', 'Iceland', 'USA',
                'Afghanistan', 'India', 'Pakisthan', 'Iceland', 'USA'],
    '年份': [2019, 2019, 2019, 2019, 2019, 2020, 2020, 2020, 2020, 2020],
    '贸易额(美元)': [10.00, 30.00, 13.00, 40.00, 51.00, 12.00, 45.00, 20.00, 34.00, 62.00]
}
df_long = pd.DataFrame(raw_data)

步骤2:转换为目标宽表

使用pivot()方法指定行、列和值的对应关系,再调整格式匹配需求:

# 核心转换逻辑:年份为行,国家为列,贸易额为填充值
df_wide = df_long.pivot(
    index='年份',
    columns='国家或地区',
    values='贸易额(美元)'
).reset_index()

# 清理列名层级,避免多级索引
df_wide.columns.name = None

# 将贸易额转为整数(匹配目标格式的整数显示)
df_wide = df_wide.astype({
    '年份': int,
    'Afghanistan': int,
    'India': int,
    'Pakisthan': int,
    'Iceland': int,
    'USA': int
})

转换后结果

执行代码后得到的宽表如下:

年份AfghanistanIndiaPakisthanIcelandUSA
20191030134051
20201245203462

补充说明

  • 如果你的原始数据存在同一国家+年份的重复记录,可以改用pivot_table()方法并指定聚合函数(比如aggfunc='sum')来处理重复值。
  • reset_index()是为了把年份从行索引转回普通列,和目标格式保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 23:06:19