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

如何使用Imputer填充类将-999替换为上一行同列对应值?

问题解答

方案适配性判断

使用scikit-learn的Imputer填充类不是合适的方案:KNNImputer是基于特征距离计算近邻值填充,无法精准指定仅取用当前单元格的上一行同列数值,反而会引入不必要的计算开销,和需求场景不匹配。

最优实现方式

Pandas自带的前向填充方法即可高效实现需求,不需要自定义循环也不需要调用第三方填充类,仅需2步操作:

  1. 把数据中的-999替换为标准缺失值NaN
  2. 调用ffill()方法,该方法会自动用上一行同列的有效值填充当前行的缺失值

示例代码如下:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame([
    [1, 2, 3],
    [4, -999, 6],
    [7, 8, 9]
])

# 执行填充逻辑
df = df.replace(-999, np.nan).ffill()

运行后输出结果完全符合预期:

012
123
426
789

补充说明

如果你的数据第一行就存在-999的情况,ffill()会保留该位置为NaN,可根据业务需求额外补充第一行的填充逻辑即可。该方法时间复杂度为O(n),性能远高于自定义循环和Imputer类实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 18:09:03