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

Pandas日期索引DataFrame补全缺失日期行及前向填充实现问询

解决方案

你要实现的补全日期索引的需求,直接用Pandas内置的reindex方法就能高效完成,不需要手动筛选缺失日期再拼接,操作步骤如下:

步骤1:修正全量日期生成逻辑

你当前的日期生成代码结束值写了max_date-timedelta(days=1),会漏掉原DataFrame的最后一天索引,调整为直接取max_date即可:

import pandas as pd
from datetime import timedelta

min_date = df.index.min()
max_date = df.index.max()
# 生成首尾区间内的所有自然日
date_list = pd.date_range(min_date, max_date, freq='d')

步骤2:直接补全索引+前向填充

reindex方法会自动匹配已有索引的数据,缺失日期的行默认填充NaN,后续直接链式调用ffill()就能完成前向填充,一行代码即可实现你要的效果:

# 仅补全缺失行,值为NaN
df_full = df.reindex(date_list)
# 补全行并直接做前向填充,和你给出的预期输出完全一致
df_full = df.reindex(date_list).ffill()

如果你确实需要单独筛选缺失日期

如果你的场景需要先拿到所有缺失的日期再做其他处理,可以用以下两种方法筛选:

# 方法1:用日期索引的difference方法,直接返回差集(推荐,效率更高)
missing_dates = date_list.difference(df.index)

# 方法2:用isin方法取反筛选
missing_dates = date_list[~date_list.isin(df.index)]

拿到缺失日期后再拼接的实现方式如下(不如reindex简洁,仅作参考):

# 构造缺失日期的空DataFrame
df_missing = pd.DataFrame(index=missing_dates, columns=df.columns)
# 拼接原数据和空数据后按日期排序
df_full = pd.concat([df, df_missing]).sort_index().ffill()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:15:03