用最后 5 个值的平均值替换 NaN - Pandas

问题描述 投票:0回答:1

我想知道如何用最后 5 个值的最后平均值替换数据集中的 NaN。

A 栏 B 栏
1 2
2 5
3 5
4 2
5 2
NaN 2
NaN 2
1 2
1 2
1 2
1 NaN
1 2
1 2

例如,在这种情况下,第一个 NaN 将是 (1,2,3,4,5) 的平均值,第二个 NaN 将是 (2,3,4,5,另一个 NaN 的值)的平均值.

我已经尝试过了

df.fillna(df.mean())
python pandas database numpy mean
1个回答
0
投票

如前所述,已在here得到解答,但最新的pandas版本的更新版本如下:


data = {
    'col1': [1, 2, 3, 4, 5, np.nan, np.nan, 1, 1, 1, 1, 1, 1],
    'col2': [2, 5, 5, 2, 2, 2, 2, 2, 2, 2, np.nan, 2, 2]
}
df = pd.DataFrame(data)

window_size = 5
df = df.fillna(df.rolling(window_size + 1, min_periods = 1).mean())

输出:

    col1  col2
0    1.0   2.0
1    2.0   5.0
2    3.0   5.0
3    4.0   2.0
4    5.0   2.0
5    3.0   2.0
6    3.5   2.0
7    1.0   2.0
8    1.0   2.0
9    1.0   2.0
10   1.0   2.0
11   1.0   2.0
12   1.0   2.0
© www.soinside.com 2019 - 2024. All rights reserved.