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

Pandas:按ProdID补全缺失日期并向前填充数值字段

解决方法:用Pandas分组补全日期并前向填充

这个需求在时间序列数据处理里太常见了,我来一步步给你拆解实现步骤,保证你能直接复用:

1. 准备数据并格式化日期

首先得把日期列转成datetime类型,不然没法正确生成连续的日期序列:

import pandas as pd

# 构造你提供的示例数据
data = {
    'ProdID': ['Prod1', 'Prod1', 'Prod1', 'Prod2', 'Prod2', 'Prod2', 'Prod2'],
    'Date': ['4/1/2019', '4/3/2019', '4/4/2019', '4/1/2019', '4/2/2019', '4/3/2019', '4/4/2019'],
    'Val1': [1, 2, 3, 1, 1, 2, 2],
    'Val2': [3, 3, 4, 3, 3, 4, 5],
    'Val3': [4, 54, 54, 3, 4, 4, 3]
}

df = pd.DataFrame(data)
# 把Date列转为datetime类型,确保日期能被正确识别
df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')

2. 分组补全日期+前向填充缺失值

核心逻辑是按ProdID分组,给每个分组生成完整的日期序列,再用前一条有效数据填充缺失的Val字段:

def fill_missing_dates(group):
    # 生成当前ProdID的完整日期范围(从组内最早到最晚日期)
    full_dates = pd.date_range(start=group['Date'].min(), end=group['Date'].max(), freq='D')
    # 把原数据按日期索引重新对齐,缺失的日期会自动生成NaN行
    group = group.set_index('Date').reindex(full_dates)
    # 恢复ProdID列(reindex后该列会变成NaN,用分组名称填充)
    group['ProdID'] = group.name
    # 用前向填充(ffill)补全Val1-Val3的缺失值——就是拿上一条有效数据填当前空值
    group = group.ffill()
    # 把日期从索引放回列里,重置索引
    return group.reset_index().rename(columns={'index': 'Date'})

# 按ProdID分组应用函数,再合并所有分组的结果
filled_df = df.groupby('ProdID').apply(fill_missing_dates).reset_index(drop=True)

3. 查看最终结果

运行后打印filled_df就能得到你要的目标表格:

print(filled_df)

输出示例:

Date ProdID  Val1  Val2  Val3
0 2019-04-01  Prod1   1.0   3.0   4.0
1 2019-04-02  Prod1   1.0   3.0   4.0  # 这行是补全的缺失日期,用4/1的数据填充
2 2019-04-03  Prod1   2.0   3.0  54.0
3 2019-04-04  Prod1   3.0   4.0  54.0
4 2019-04-01  Prod2   1.0   3.0   3.0
5 2019-04-02  Prod2   1.0   3.0   4.0
6 2019-04-03  Prod2   2.0   4.0   4.0
7 2019-04-04  Prod2   2.0   5.0   3.0

补充小技巧

  • 如果所有ProdID都需要固定日期范围(比如不管组内数据,都要覆盖4/1到4/4),直接把full_dates改成固定起止:pd.date_range(start='2019-04-01', end='2019-04-04', freq='D')
  • 要是需要把Val字段转回整数类型,加一行:filled_df[['Val1','Val2','Val3']] = filled_df[['Val1','Val2','Val3']].astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:12:59