我想知道如何用最后 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())
如前所述,已在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