You need to enable JavaScript to run this app. Pandas DataFrame重构建:如何关联跨表日期范围按日期拆分行?
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame重构建:如何关联跨表日期范围按日期拆分行?

实现代码与逻辑

核心操作为将全量日期范围与原始门店-履约类型数据做笛卡尔积关联,为每条原始记录匹配全量日期生成独立行,无需手动重复填充门店、履约类型、上线日期字段。

1. 生成全量日期范围

沿用你定义的日期提取规则:

date_range = pd.date_range(
    start=final_forecasts['FORECAST_DATE'].iloc[0], 
    end=final_forecasts['FORECAST_DATE'].iloc[-1]
)

2. 关联生成目标结构

高版本pandas(≥1.2.0)简洁写法

直接使用交叉合并模式,无需指定关联键:

# 将日期范围封装为独立DataFrame,列名对齐目标结构
date_df = pd.DataFrame({'date_range': date_range})
# 可选:将Timestamp类型日期转为YYYY-MM-DD字符串格式,匹配示例输出
date_df['date_range'] = date_df['date_range'].dt.strftime('%Y-%m-%d')

# 交叉合并生成全量明细行
result_df = df_1.merge(date_df, how='cross')

低版本pandas兼容写法

如果pandas版本不支持how='cross'参数,可通过临时辅助键实现等效关联:

# 将日期范围封装为独立DataFrame
date_df = pd.DataFrame({'date_range': date_range})
date_df['date_range'] = date_df['date_range'].dt.strftime('%Y-%m-%d')

# 为两个表添加相同的临时匹配键
df_1['_temp_key'] = 1
date_df['_temp_key'] = 1

# 按临时键合并后删除临时列
result_df = df_1.merge(date_df, on='_temp_key').drop(columns=['_temp_key'])

输出效果

生成的result_df完全匹配目标结构:

  • 每一个STORE_ID+FULFILLMENT_TYPE的组合,都会完整覆盖date_range中的所有日期
  • 每一个日期对应生成独立行
  • LAUNCH_DT字段会自动跟随所属门店组合重复填充,无需手动处理值复制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 05:45:05