Pandas:自定义 fillna() 函数?

Pandas: Custom fillna() function?

假设我有这样的数据:

>>> df = pd.DataFrame({'values': [5, np.nan, 2, 2, 2, 5, np.nan, 4, 5]})
>>> print(df)
   values
0     5.0
1     NaN
2     2.0
3     2.0
4     2.0
5     5.0
6     NaN
7     4.0
8     5.0

我知道我可以使用 fillna()fillna(method='ffill') 等参数来用以前的值填充缺失值。有没有办法为 fillna 编写自定义方法?假设我希望每个 NaN 值都被前 2 个值和后 2 个值的算术中间值替换,我该怎么做? (我并不是说这是填充值的好方法,但我想知道是否可以做到)。

输出的示例:

0     5.0
1     3.0 
2     2.0
3     2.0
4     2.0
5     5.0
6     4.0
7     4.0
8     5.0

您可以按如下方式一起使用 ffillbfill :

df['values'] = df['values'].ffill().add(df['values'].bfill()).div(2)
print(df)

   values
0     5.0
1     3.0 
2     2.0
3     2.0
4     2.0
5     5.0
6     4.0
7     4.0
8     5.0

只需将 df['values'] 更改为 df 即可应用于整个数据帧!