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

如何将Pandas DataFrame中的独立年份列转换为时间序列数据?

Pandas DataFrame 宽表转时间序列长表

原始数据结构

2017 2018 2019
Bill   10   15  20
Jim    5    10  20

目标格式

Name Year Amount
Bill 2017 10 
Bill 2018 15 
Jim  2017 5
...

实现方法

使用Pandas的melt()方法可快速完成宽表到长表的转换,具体步骤如下:

  1. 构造原始DataFrame(已有数据可跳过此步)
  2. 将行索引(姓名)转为普通列
  3. 调用melt()指定转换规则,并重命名列名匹配目标格式

完整代码:

import pandas as pd

# 构造原始DataFrame
raw_data = {
    2017: [10, 5],
    2018: [15, 10],
    2019: [20, 20]
}
df = pd.DataFrame(raw_data, index=['Bill', 'Jim'])

# 执行格式转换
converted_df = df.reset_index().melt(
    id_vars='index',
    var_name='Year',
    value_name='Amount'
).rename(columns={'index': 'Name'})

# 输出结果
print(converted_df)

代码说明

  • reset_index():把原DataFrame的行索引(姓名)转为名为index的普通列
  • melt():
    • id_vars:指定转换后保留的标识列(此处为姓名列)
    • var_name:设置原年份列名对应的新列名
    • value_name:设置原数值对应的新列名
  • rename():将临时的index列重命名为Name,匹配目标格式

运行后即可得到符合要求的时间序列格式数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:40:38