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

如何在Pandas中高效补全缺失日期对应的行数据

Pandas补全分组缺失日期并填充默认值

处理步骤

  1. 转换日期格式:将date列转为datetime类型,确保Pandas能正确识别日期维度。
  2. 生成完整日期范围:基于原数据的最小、最大日期,创建连续的日期序列。
  3. 构建完整索引笛卡尔积:结合所有唯一key值和完整日期序列,生成包含所有可能组合的索引。
  4. 对齐数据填充缺失值:将原数据映射到完整索引,缺失的value自动填充为0,最后重置索引得到目标格式。

完整代码

import pandas as pd

# 初始化原DataFrame
d1 = pd.DataFrame({
    'date': ['2023-12-01', '2023-12-03', '2023-12-04', '2023-12-01'],
    'key': ['K0', 'K1', 'K0', 'K1'],
    'value': [9, 3, 10, 8]
})

# 转换date列为datetime类型
d1['date'] = pd.to_datetime(d1['date'])

# 生成全局连续日期范围
date_range = pd.date_range(start=d1['date'].min(), end=d1['date'].max())

# 生成key与日期的笛卡尔积索引
full_index = pd.MultiIndex.from_product(
    [d1['key'].unique(), date_range],
    names=['key', 'date']
)

# 对齐原数据并填充缺失值
result = d1.set_index(['key', 'date']).reindex(full_index, fill_value=0).reset_index()

# 输出结果
print(result)

输出结果

key       date  value
0  K0 2023-12-01      9
1  K0 2023-12-02      0
2  K0 2023-12-03      0
3  K0 2023-12-04     10
4  K1 2023-12-01      8
5  K1 2023-12-02      0
6  K1 2023-12-03      3
7  K1 2023-12-04      0

效率说明

MultiIndex.from_product属于向量化操作,比逐组循环处理的效率更高,适合大规模数据集场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:55:20