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

如何将列格式时间序列数据转换为常规DataFrame?

解决方案:用pandas的melt函数实现宽表转长表

你不需要遍历单元格,pandas内置的melt函数就是专门处理这种宽格式转长格式的场景,代码简洁且效率高。

具体代码实现

import pandas as pd

# 原始数据
df = pd.DataFrame({'id' : [1,2,3,4,5,6], 
                   'category' : [1,3,1,4,3,2], 
                   'day1' : [10,20,30,40,50,60], 
                   'day2' : [1,2,3,4,5,7], 
                   'day3' : [0,1,2,3,7,9] })

# 宽转长转换
result_df = df.melt(id_vars=['id', 'category'],  # 保留的标识列
                    value_vars=['day1', 'day2', 'day3'],  # 需要转换的列
                    value_name='day')  # 转换后的数值列名称

# 去掉自动生成的variable列(不需要的话执行此步)
result_df = result_df.drop(columns=['variable'])

print(result_df)

转换后结果

运行代码后得到的结果和你需求完全匹配:

id  category  day
0    1         1   10
1    2         3   20
2    3         1   30
3    4         4   40
4    5         3   50
5    6         2   60
6    1         1    1
7    2         3    2
8    3         1    3
9    4         4    4
10   5         3    5
11   6         2    7
12   1         1    0
13   2         3    1
14   3         1    2
15   4         4    3
16   5         3    7
17   6         2    9

参数说明

  • id_vars:指定转换时保持不变的标识列,每个长表行会重复这些列的对应值
  • value_vars:指定要被“拆解”成单行的目标列,这里就是所有以day开头的列
  • value_name:设置转换后数值列的名称,对应你需要的day列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:25:21