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

Python/Pandas时间序列预测:基于两个DataFrame构建时序数据集

时间序列特征加工实现方案(Pandas 版本)

步骤1:基础数据合并

先统一两个表的日期格式,再按Date、store_id、product_id三个键关联,把订单量字段合并到销售额表中:

import pandas as pd

# 统一日期字段为datetime格式,避免匹配失败
DF1['Date'] = pd.to_datetime(DF1['Date'])
DF2['Date'] = pd.to_datetime(DF2['Date'])

# 左连接保留DF1的全部记录,不需要的话可以改成inner内连接
merged_df = pd.merge(
    DF1,
    DF2,
    on=['Date', 'store_id', 'product_id'],
    how='left'
)
# 无订单的日期填充订单量为0,可根据业务逻辑调整填充规则
merged_df['Orders'] = merged_df['Orders'].fillna(0)

步骤2:生成前n日历史订单滞后特征

必须按store_id+product_id分组后再做位移,避免不同门店、商品的时间序列混淆:

# 先按分组+日期升序排序,保证时间序列顺序正确
merged_df = merged_df.sort_values(by=['store_id', 'product_id', 'Date']).reset_index(drop=True)

n = 7 # 自定义需要的滞后天数,比如要前3天就设为3
for lag_day in range(1, n+1):
    merged_df[f'Orders_lag_{lag_day}'] = merged_df.groupby(['store_id', 'product_id'])['Orders'].shift(lag_day)

# 可选:删除前n天无足够历史数据的样本,避免特征缺失
merged_df = merged_df.dropna(subset=[f'Orders_lag_{i}' for i in range(1, n+1)])

步骤3:生成最终模型输入表

删除不需要的原始订单量字段,保留需要的输出字段:

model_input = merged_df.drop(columns=['Orders'])

输出的model_input就包含要求的Date、Sales、store_id、product_id,以及Orders_lag_1到Orders_lag_n的前n日历史订单特征。

补充说明:如果你的数据存在日期断档(比如部分门店/商品部分日期无记录),需要先补全连续日期再做滞后,否则滞后得到的是前i条记录而不是自然日的前i天数据,补全参考代码:

# 生成覆盖全周期的连续日期
all_dates = pd.date_range(start=merged_df['Date'].min(), end=merged_df['Date'].max(), freq='D')
# 生成日期、门店、商品的全组合笛卡尔积
full_keys = pd.MultiIndex.from_product(
    [all_dates, merged_df['store_id'].unique(), merged_df['product_id'].unique()],
    names=['Date', 'store_id', 'product_id']
)
# 重索引补全缺失的日期记录
merged_df = merged_df.set_index(['Date', 'store_id', 'product_id']).reindex(full_keys).reset_index()
# 补全后填充缺失值
merged_df['Orders'] = merged_df['Orders'].fillna(0)
merged_df['Sales'] = merged_df['Sales'].fillna(0)

注意事项

  • 合并的连接方式可根据业务需求调整:如果只要两个表都存在的日期记录,把how='left'改为how='inner'即可
  • 滞后特征的缺失值填充规则可以灵活调整,不需要丢弃样本的话也可以用0、均值或者时序填充方法处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:00:04