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

如何在Pandas中将周粒度数据集展开生成每日粒度数据集

实现方法

核心思路是先将日期类字段转为Pandas可识别的 datetime 格式,为每一行生成对应周的连续日期序列,再将序列展开为多行,其余字段会自动匹配复制到对应行。

完整可运行代码

import pandas as pd

# 原始数据集
df = pd.DataFrame({
    'weekstart':['01-Jan-18','08-Jan-18','15-Jan-18','22-Jan-18'],
    'weekend':['07-Jan-18','14-Jan-18','21-Jan-18','28-Jan-18'],
    'Spend':[34235.922,37359.6048,38916.1164,36903.8628],
    'Daily':[4890.846,5337.086,5559.445,5271.98],
})

# 步骤1:把周起始日期转为datetime格式
df['weekstart'] = pd.to_datetime(df['weekstart'])

# 步骤2:为每一行生成对应周的7天连续日期序列
df['date'] = df['weekstart'].apply(lambda x: pd.date_range(start=x, periods=7, freq='D'))

# 步骤3:把日期序列展开为多行,得到最终结果
result = df.explode('date', ignore_index=True)

# 可选:如果需要把日期格式转回「01-Jan-18」这类字符串格式,可加下面这行
# result['date'] = result['date'].dt.strftime('%d-%b-%y')

如果你的数据集存在周长度不固定的情况,也可以基于周起止日期生成日期序列,把步骤2替换为如下代码即可:

df['weekend'] = pd.to_datetime(df['weekend'])
df['date'] = df.apply(lambda row: pd.date_range(start=row['weekstart'], end=row['weekend'], freq='D'), axis=1)

运行得到的result就是按日展开的目标数据集,完全符合预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:36:05