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

Pandas如何补全datetime列缺失日期并填充前序最后一个有效值

pandas 补全缺失日期并以前置有效值填充实现方案

核心逻辑基于pandas原生向量化接口实现,无逐行循环开销,9000行规模数据处理耗时在毫秒级,可自动适配多段日期缺失场景。

实现步骤

  • 将dd/mm/yyyy格式的日期列转换为pandas标准datetime类型,指定dayfirst=True避免日期解析错位
  • 将日期列设为索引,按天粒度重采样,自动生成从数据集最小日期到最大日期的连续时间序列,缺失日期的行默认填充为空值
  • 对值列执行前向填充(ffill),所有缺失日期的取值自动继承该缺失段前最后一个有效值,完全匹配需求

完整代码示例

import pandas as pd

# --------------------------
# 示例数据构造(替换为你的实际数据即可)
# --------------------------
df = pd.DataFrame({
    'date': ['01/01/2000', '02/01/2000', '03/01/2000', '06/01/2000'],
    'value': ['a', 'b', 'c', 'd']
})

# --------------------------
# 核心处理逻辑
# --------------------------
# 日期格式转换
df['date'] = pd.to_datetime(df['date'], dayfirst=True)
# 按天重采样补全缺失日期
df = df.set_index('date').resample('D').asfreq()
# 前向填充值列
df['value'] = df['value'].ffill()
# 可选:将日期从索引还原为普通列
df = df.reset_index()

处理结果

处理后数据完全符合预期:

datevalue
2000-01-01a
2000-01-02b
2000-01-03c
2000-01-04c
2000-01-05c
2000-01-06d

注意事项

  • 如果原始数据存在重复日期,先执行去重逻辑再重采样:df = df.drop_duplicates(subset='date', keep='last'),避免重采样报错
  • 如果数据集中存在除value外不需要填充的列,不要全局调用填充方法,仅对需要的列单独执行ffill即可
  • 如果需要补全的日期粒度不是天,只需要修改resample的参数,比如按月补全传'M'、按小时补全传'H'即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:42:13