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

如何将宽格式Pandas DataFrame转换为长格式?

Pandas 宽表转长表实现方案

问题描述

我有如下格式的Pandas DataFrame:

Year    United Kingdom  Canada
0   1880    0.13    0.00
1   1890    0.16    0.00
2   1900    0.29    0.00
3   1910    0.32    0.00
4   1920    0.56    0.01

需要转换为以下长表格式:

Year    Country         value
0   1880    United Kingdom  0.13    
1   1890    United Kingdom  0.16
2   1900    United Kingdom  0.29    
3   1910    United Kingdom  0.32
4   1920    United Kingdom  0.56
5   1880    Canada          0.00
6   1890    Canada          0.00 
...

尝试过transpose和reset_index但没找到正确方法,想问有没有简便方法,还是要创建全新DataFrame?

解决方案

用Pandas内置的melt()方法就能直接实现,不需要手动创建新DataFrame,这是处理宽表转长表的标准工具。

示例代码:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'Year': [1880, 1890, 1900, 1910, 1920],
    'United Kingdom': [0.13, 0.16, 0.29, 0.32, 0.56],
    'Canada': [0.00, 0.00, 0.00, 0.00, 0.01]
})

# 执行宽转长转换
melted_df = df.melt(
    id_vars=['Year'],          # 保持结构不变的列
    value_vars=['United Kingdom', 'Canada'],  # 需要转换的列
    var_name='Country',        # 原列名转换后的新列名
    value_name='value'         # 原数值转换后的新列名
)

print(melted_df)

执行后输出结果完全符合需求格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:15:40