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

如何在Pandas DataFrame中堆叠指定日期列并保留id与values列

实现DataFrame日期列堆叠并保留指定列结构

原始数据

import pandas as pd

data = pd.DataFrame({'id':[1,2,3], 
                     'start date': ['2001-11-13', '2002-6-26', '2004-2-22'],
                     'end date': ['2002-6-25', '2004-2-21', '2006-8-21'],
                     'values':[1000,2000,3000]})

解决方案

使用pd.melt()方法可快速实现宽表转长表,将指定日期列堆叠的同时,保留id和values列的对应关系:

# 执行堆叠转换
result = pd.melt(
    data,
    id_vars=['id', 'values'],  # 保持结构不变的列
    value_vars=['start date', 'end date'],  # 需要堆叠的日期列
    value_name='date'  # 堆叠后的日期列名称
)

调整顺序匹配需求

如果需要先展示所有start date再展示end date,可按原列名排序后清理冗余列:

# 按原日期列类型排序并重置索引
result = result.sort_values('variable').reset_index(drop=True)
# 删除原日期列的类型标记列
result = result.drop('variable', axis=1)

最终得到的DataFrame如下:

id  values        date
0   1    1000  2001-11-13
1   2    2000   2002-6-26
2   3    3000    2004-2-22
3   1    1000   2002-6-25
4   2    2000   2004-2-21
5   3    3000   2006-8-21

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:54:27