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

Python使用10日滚动平均值填充DataFrame不足2年列的缺失数据

实现方案

该需求完全可以实现,核心逻辑是按时间顺序逐行填充缺失值,每次计算当前行对应列的前10条历史数据(含已填充的数值)的平均值作为填充值,具体实现代码如下:

前置操作

提前导入pandas库后执行以下代码即可:

import pandas as pd

# 1. 将数据集的日期索引转换为标准时间格式,按时间升序排序避免窗口计算错误
df.index = pd.to_datetime(df.index, format='%d/%m/%Y')
df = df.sort_index()

# 2. 自动识别所有存在缺失值、需要填充的列
cols_to_fill = df.columns[df.isna().any()].tolist()

# 3. 逐列逐行完成10日滚动平均填充
for col in cols_to_fill:
    # 定位当前列第一个缺失值的起始位置
    first_na_pos = df.index.get_loc(df[col].isna().idxmax())
    # 从第一个缺失值开始向后遍历所有行
    for row_idx in range(first_na_pos, len(df)):
        # 取当前行往前最多10条历史数据计算平均值,作为当前行的填充值
        window_data = df[col].iloc[max(0, row_idx - 10) : row_idx]
        df.iloc[row_idx, df.columns.get_loc(col)] = window_data.mean()

逻辑说明

  • 代码自动识别所有存在缺失值的列,无需手动指定列名
  • 每次计算仅使用当前行之前的历史数据,不会用到后续未产生的数值,符合真实统计逻辑
  • 若前10条窗口内存在少量原始缺失值,会自动基于窗口内的有效值计算平均;如果要求必须满足10个有效值才计算,可以额外添加判断条件,窗口内有效值数量不足时改用该列全部历史均值填充即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:57:01