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

如何实现Pandas数据框的列转行(将年份列合并为单个year列)?

如何实现Pandas数据框的列转行(将年份列合并为单个year列)?

嗨,这个需求太常见啦!用Pandas内置的melt()函数就能完美解决宽表转长表的问题,把分散在不同列的年份整合到单独的year列里。

我给你举个具体的例子,先模拟一下你的原始数据结构:

import pandas as pd

# 假设你的原始数据长这样(country是示例的非年份列,你可以换成自己数据里的对应列)
df = pd.DataFrame({
    'country': ['USA', 'Canada', 'UK'],
    '2020': [100, 200, 300],
    '2021': [150, 250, 350],
    '2022': [200, 300, 400]
})

接下来用melt()转换:

# id_vars指定需要保留的非年份列(如果有多个可以写成列表,比如['country', 'category'])
# var_name设置新的年份列名称为'year'
# value_name设置年份对应数值的列名(你可以根据自己的数据改成实际的字段名,比如'gdp'、'sales')
df_long = df.melt(id_vars=['country'], var_name='year', value_name='value')

如果你的原始数据没有需要保留的其他列,直接这么写就行:

df_long = df.melt(var_name='year', value_name='value')

另外,转换后的year列可能是字符串类型,如果需要转成整数方便后续分析,可以加一行:

df_long['year'] = df_long['year'].astype(int)

这样处理完之后,你的数据框就会变成你想要的长格式,所有年份都集中在单个year列里啦!

备注:内容来源于stack exchange,提问作者saibot_90

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 07:14:29