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

如何将DataFrame中的周周期行拆分为多行日期记录

实现方案

下面提供两种实用方法来完成需求:

方法一:从周周期生成每日日期

假设你已经得到了周均价的DataFrame(命名为weekly_avg),可以按以下步骤展开:

  1. 先把周周期的索引转为列,方便后续处理
  2. 为每个周周期生成包含该周所有日期的序列
  3. 展开日期序列并整理结果
# 重置索引,将周period转为普通列
weekly_avg = weekly_avg.reset_index()
# 为每个周生成从周一到周六的日期序列(W-SAT表示周六为周结束日)
weekly_avg['daily_dates'] = weekly_avg['date'].apply(
    lambda p: pd.date_range(start=p.start_time, end=p.end_time, freq='D')
)
# 展开日期序列,并重命名列名
result = weekly_avg.explode('daily_dates').rename(columns={'daily_dates': 'date'})
# 保留需要的列并重置索引(可选)
result = result[['date', 'avg_price']].reset_index(drop=True)

方法二:关联原始数据的日期(更高效)

如果你的原始DataFramedf还保留着所有每日的日期记录,可以直接通过关联的方式快速得到结果:

  1. 给原始数据添加周周期标识列
  2. 计算周均价后合并回原始数据
# 给原始数据添加周标识列,和你分组时的周期规则一致
df['week_period'] = df['date'].dt.to_period('W-SAT')
# 计算周均价(和你之前的代码逻辑一致)
weekly_avg = df.groupby('week_period')['price'].mean().rename('avg_price')
# 将周均价合并回原始数据,得到每个日期对应的周均价
result = df[['date']].merge(weekly_avg, left_on='week_period', right_index=True, how='left')
# 可选:如果原始数据有重复日期,执行去重
result = result.drop_duplicates(subset='date').reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:40:47