如何在按Code分组的DataFrame索引中插入缺失的全量日期
Pandas分组补全全量日期实现方案
该需求可以通过Pandas的多级索引重索引功能轻松实现,具体步骤如下:
- 第一步:预处理原数据,将日期索引转换为datetime格式
# 确保Date索引为datetime类型 df.index = pd.to_datetime(df.index)
- 第二步:生成全局日期范围(覆盖所有数据的最小到最大月末日期)
min_date = df.index.min() max_date = df.index.max() # 生成按月末对齐的全量日期序列 all_dates = pd.date_range(start=min_date, end=max_date, freq='M')
- 第三步:构造全量日期+Code的笛卡尔积索引
# 获取所有唯一的Code值 all_codes = df['Code'].unique() # 构造双级索引,顺序与原数据索引逻辑对齐 full_index = pd.MultiIndex.from_product( [all_dates, all_codes], names=['Date', 'Code'] )
- 第四步:重索引补全缺失值并调整格式
# 将原数据转为双索引后重索引,补全缺失值为NaN result = df.set_index('Code', append=True)\ .reindex(full_index)\ .reset_index(level='Code')\ .sort_values(by=['Code', 'Date'])
运行以上代码得到的result即为你需要的期望输出格式,所有Code都会覆盖全局最小到最大的全部月末日期,无统计值的Count字段自动填充为NaN。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

