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

如何根据日期调整Pandas DataFrame的结构?

问题描述

我有如下初始Pandas DataFrame:

IDParameterStartEnd
1405.05.202307.05.2023
2205.05.202306.05.2023
3108.05.202309.05.2023

想要将其转换为以下结构,本质是对时间段进行逆透视,展开Start到End之间的所有日期:

IDParameterDate
1405.05.2023
1406.05.2023
1407.05.2023
2205.05.2023
2206.05.2023
3108.05.2023
3109.05.2023
解决方案

完全可以实现,以下是具体步骤和代码:

先将日期列转换为Pandas可识别的datetime类型,然后为每一行生成Start到End之间的所有日期序列,最后通过explode方法展开序列即可:

import pandas as pd

# 构造初始数据
df = pd.DataFrame({
    'ID': [1, 2, 3],
    'Parameter': [4, 2, 1],
    'Start': ['05.05.2023', '05.05.2023', '08.05.2023'],
    'End': ['07.05.2023', '06.05.2023', '09.05.2023']
})

# 转换日期格式为datetime类型
df[['Start', 'End']] = df[['Start', 'End']].apply(pd.to_datetime, format='%d.%m.%Y')

# 为每行生成连续日期序列
df['Date'] = df.apply(lambda x: pd.date_range(x['Start'], x['End'], freq='D'), axis=1)

# 展开日期序列并清理多余列
result = df.explode('Date').drop(['Start', 'End'], axis=1)

# 将日期转回原字符串格式(可选,若需要保留原显示格式)
result['Date'] = result['Date'].dt.strftime('%d.%m.%Y')

print(result)

执行代码后即可得到目标结构的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:03:24