You need to enable JavaScript to run this app. Pandas使用resample按月统计时如何保留缺失月份并填充0
优惠活动
大模型
产品
解决方案
定价
更多

Pandas使用resample按月统计时如何保留缺失月份并填充0

实现方案

核心逻辑是先构造「所有公司+所有method类型+2020年12个月末」的全量维度组合,再和实际统计结果对齐,无数据的位置自动补0,具体代码如下:

步骤1:先做基础月度统计

和你原有逻辑一致,先统计出有数据的月份的调用次数:

import pandas as pd

# 基础统计得到三级索引:[name_normalized, method, day(月末日期)],值为调用次数
rep_month = Only2020_PPC.groupby(['name_normalized','method']).resample("M")['method'].count()
rep_month.name = 'call_count' # 给计数列命名,方便后续处理

步骤2:构造全量维度索引

生成三个维度的唯一值,再做笛卡尔积得到所有可能的组合:

# 提取所有维度的唯一值
all_companies = Only2020_PPC['name_normalized'].unique()
all_methods = Only2020_PPC['method'].unique()
# 生成2020年1-12月所有月末日期
all_2020_months = pd.date_range(start='2020-01-01', end='2020-12-31', freq='M')

# 生成全量多重索引,层级顺序和前面统计结果的索引顺序完全一致
full_index = pd.MultiIndex.from_product(
    [all_companies, all_methods, all_2020_months],
    names=['name_normalized', 'method', 'day']
)

步骤3:索引对齐补0

用全量索引重排统计结果,缺失值填充为0:

# 对齐全量索引,无数据的位置补0
rep_month_full = rep_month.reindex(full_index, fill_value=0).reset_index()

# 如果需要和你给出的预期示例格式一致,可将day、method设为索引
rep_month_full = rep_month_full.set_index(['day', 'method']).sort_index()

完成后你可以验证eole medical的统计结果,2020年12个月份都会存在,无业务的月份调用次数为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 02:06:04