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

如何在Python中将周度DataFrame拆分为日度并合并均值数据

解决方案

步骤1:统一日期格式

先确保两个DataFrame的日期列转换为datetime类型,这是后续日期处理的基础:

import pandas as pd

# 转换dataframe_1的日度日期列
dataframe_1['date'] = pd.to_datetime(dataframe_1['date'])
# 转换dataframe_2的周度日期列(假设列名为week_date,代表周起始/结束日)
dataframe_2['week_date'] = pd.to_datetime(dataframe_2['week_date'])

步骤2:将周度数据拆分为日度

为每条周度记录生成对应的7天日期序列,拆分后将周均值cinema_generals直接填充到每一天:

# 为每周生成连续7天的日期序列
dataframe_2['daily_dates'] = dataframe_2['week_date'].apply(
    lambda x: pd.date_range(start=x, periods=7, freq='D')
)

# 拆分日期序列为单独行,并重命名日期列
daily_df2 = dataframe_2.explode('daily_dates').rename(columns={'daily_dates': 'date'})

# 移除原周度日期列(可选操作)
daily_df2 = daily_df2.drop('week_date', axis=1)

步骤3:合并到日度DataFrame

通过日期(若存在影院ID等分组维度则同时匹配该维度)将拆分后的周度数据合并到dataframe_1:

# 基础版:仅按日期合并
merged_df = pd.merge(
    dataframe_1,
    daily_df2[['date', 'cinema_generals']],
    on='date',
    how='left'  # 保留dataframe_1所有日度记录
)

# 带分组维度版(如存在cinema_id)
merged_df = pd.merge(
    dataframe_1,
    daily_df2[['cinema_id', 'date', 'cinema_generals']],
    on=['cinema_id', 'date'],
    how='left'
)

关键注意事项

  • 周起始日验证:确认dataframe_2中week_date的定义(如周一/周日作为周起始),若需调整日期范围,可修改pd.date_range的start参数(例如start=x - pd.Timedelta(days=6)表示以week_date为周日,生成周一到周日的序列)
  • 缺失值处理:若dataframe_1存在daily_df2未覆盖的日期,合并后cinema_generals会出现NaN,可根据业务需求用ffill()/bfill()或固定值填充
  • 分组维度一致性:若数据按影院、区域等维度分组,需确保拆分和合并时同步匹配这些维度,避免数据错位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:55:31