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

如何在Pandas DataFrame中展开时间区间得到单日逐行数据?

解决方案

最简单的实现方式是借助date_range生成区间内的逐日序列,再用explode展开行,全程3行代码即可完成:

完整实现代码

import pandas as pd

# 原始数据
df1 = pd.DataFrame(
    [['2011-01-01','2011-01-03','A'], ['2011-04-01','2011-04-01','A'], ['2012-08-28','2012-08-30','B'], ['2015-04-03','2015-04-05','A'], ['2015-08-21','2015-08-21','B']],
    columns=['d0', 'd1', 'event'])

# 步骤1:将日期列转换为datetime类型
df1[['d0', 'd1']] = df1[['d0', 'd1']].apply(pd.to_datetime)

# 步骤2:为每一行生成d0到d1的逐日日期序列
df1['Date'] = df1.apply(lambda x: pd.date_range(start=x['d0'], end=x['d1'], freq='D'), axis=1)

# 步骤3:展开日期序列,提取所需字段得到最终结果
df2 = df1.explode('Date')[['Date', 'event']]

# 可选:如果需要日期输出为字符串格式,补充执行以下代码
df2['Date'] = df2['Date'].dt.strftime('%Y-%m-%d')

说明

  • 自动兼容d0=d1的单日区间场景,无需额外分支判断
  • 要求pandas版本≥0.25(支持explode方法),当前主流pandas版本均满足要求
  • 运行效率高,适配事件类型多、数据量大的实际场景

内容的提问来源于stack exchange,提问作者Антон

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:36:04