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

如何为Pandas Series补全缺失日期并按日统计各品类数量(缺失天填0)

按日统计并补全缺失日期的解决方案

这是个很常见的时间序列补全需求,我来给你一步步拆解解决方案,先从示例数据入手,你可以直接套用到自己的数据集上。

先假设你的原始数据结构(方便演示)

假设你有这样的原始DataFrame,包含商品类型、日期和数量:

import pandas as pd

data = {
    'item_type': ['A', 'A', 'B', 'B', 'B'],
    'date': pd.to_datetime(['2024-01-01', '2024-01-03', '2024-01-02', '2024-01-04', '2024-01-05']),
    'quantity': [5, 3, 2, 4, 1]
}
df = pd.DataFrame(data)

方法一:用groupby + resample + 填充缺失值

这种方法最简洁,利用Pandas的分组重采样能力,自动补全每个item_type自身最小到最大日期之间的所有缺失天数,并将数量设为0:

# 核心代码
daily_result = (
    df.groupby('item_type')
      # 对每个分组按日期列重采样为日频率,求和数量
      .apply(lambda group: group.set_index('date')['quantity'].resample('D').sum())
      # 填充缺失日期的数量为0
      .fillna(0)
      # 重置索引,让结果回到清晰的列结构
      .reset_index(name='daily_quantity')
)

运行后你会得到每个item_type从最早到最晚日期的所有天数的统计,比如item_type A会包含2024-01-01(5)、2024-01-02(0)、2024-01-03(3)。

方法二:手动生成完整日期范围再合并

如果你需要更直观地控制日期范围(比如强制用全局的最小/最大日期,而非每个分组自己的),可以用这种方法:

# 步骤1:获取每个item_type的日期范围(如果要用全局日期,就取df['date'].min()和max())
date_ranges = df.groupby('item_type')['date'].agg(lambda x: pd.date_range(x.min(), x.max(), freq='D'))

# 步骤2:展开成包含所有item_type和对应日期的DataFrame
full_dates = pd.concat([
    pd.DataFrame({'item_type': item, 'date': dates})
    for item, dates in date_ranges.items()
])

# 步骤3:和原始数据左连接,填充缺失的数量为0,最后求和
daily_result = (
    full_dates.merge(df, on=['item_type', 'date'], how='left')
              .fillna({'quantity': 0})
              .groupby(['item_type', 'date'])['quantity']
              .sum()
              .reset_index(name='daily_quantity')
)

如果你的输入是已有的Pandas Series

如果已经通过groupby+resample得到了Series(比如s = df.groupby('item_type')['quantity'].resample('D').sum()),可以这样补全缺失值:

# 将Series转成DataFrame,展开层级索引
df_series = s.unstack(level=0)
# 补全所有缺失日期为0,再重新堆叠回原结构
daily_result = df_series.asfreq('D', fill_value=0).stack().swaplevel(0, 1).sort_index().reset_index(name='daily_quantity')

关键逻辑是:unstack把item_type转成列,asfreq('D', fill_value=0)补全所有日期间隔的缺失值,再stack恢复原来的层级结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:38:59