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

Pandas复制DataFrame行:填补缺失日期数据的简便实现方法

有两种更通用的方案,不需要手动硬编码缺失日期和对应的前序日期,后续新增缺失值也不用修改代码:

方案1:单日期对应单行数据的场景

如果你的数据每行对应一个日期,直接用日期索引+前向填充即可:

import pandas as pd

# 1. 转换日期列为datetime格式并设为索引
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')

# 2. 生成完整的日度日期序列,缺失值自动用前一天的数据填充
full_df = df.asfreq(freq='D', method='ffill').reset_index()

最后得到的full_df就是补全后的完整数据,无需额外拼接。

方案2:单日期对应多行数据的场景

如果你的数据每个日期下有多条不同维度(比如不同门店、不同商品)的记录,用笛卡尔积生成完整索引后分组填充即可:

import pandas as pd

# 1. 转换日期列格式
df['date'] = pd.to_datetime(df['date'])

# 2. 提取所有非日期维度列
dim_cols = [col for col in df.columns if col != 'date']

# 3. 生成数据覆盖范围内的所有日期
all_dates = pd.date_range(start=df['date'].min(), end=df['date'].max(), freq='D')

# 4. 生成「所有日期 + 所有维度组合」的完整索引
full_index = pd.MultiIndex.from_product(
    [all_dates] + [df[col].unique() for col in dim_cols],
    names=['date'] + dim_cols
)

# 5. 重新索引后按维度分组前向填充
full_df = df.set_index(['date'] + dim_cols)\
            .reindex(full_index)\
            .groupby(dim_cols, group_keys=False)\
            .ffill()\
            .reset_index()

以上两种方案都能自动识别所有非连续的缺失日期,自动用前一天的同维度数据补全,适合任意数量的缺失场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:39:03