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

Pandas时间序列补全:如何便捷填充缺失行并向前填充值?

分组补全时间序列缺失值的高效解决方案

问题场景

收集时间序列数据时,部分时间点无数据导致对应行缺失。示例原始数据如下:

import pandas as pd

df_ = pd.DataFrame({'group': ['A']*3+['B']*3,
                    'time': [1,2,4,1,3,4],
                    'value': [100,105,111,200,234,222]})

需求:按group分组后补全所有缺失的时间行,并通过向前填充(ffill)补全value列的值。原方法需手动创建模板DataFrame再做左连接,步骤繁琐,尤其当分组多、时间范围广时成本很高。

更优解决方案

利用pandas的groupby结合reindex、ffill,无需手动构建模板,直接按组补全时间序列:

代码实现

# 定义所有需要覆盖的时间点(根据实际需求调整范围)
all_times = range(1, 5)  # 本例中为1-4的时间点

# 分组处理:补全时间索引 + 向前填充缺失值
df_final = df_.groupby('group').apply(
    lambda group: group.set_index('time')  # 将time设为组内索引
                       .reindex(all_times)  # 补全缺失的时间点
                       .ffill()  # 向前填充value列
                       .reset_index()  # 恢复time为普通列
).reset_index(drop=True)  # 移除分组产生的冗余索引

# 输出结果
print(df_final)

输出结果

group  time  value
0     A     1  100.0
1     A     2  105.0
2     A     3  105.0
3     A     4  111.0
4     B     1  200.0
5     B     2  200.0
6     B     3  234.0
7     B     4  222.0

方案优势

  • 无需手动构建模板:避免了因分组数量多、时间范围大导致的模板编写繁琐问题
  • 组内独立处理:分组操作保证每个组的时间补全和填充仅在组内进行,不会跨组干扰
  • 代码简洁高效:逻辑连贯,链式调用完成核心操作,可读性和维护性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:30:47