Pandas 缺失值:用最接近的非 NaN 值填充

Pandas missing values : fill with the closest non NaN value

假设我有一个包含多个连续 NaN 的 pandas 系列。我知道 fillna 有几种方法来填充缺失值(backfillfill forward),但我想用最接近的非 NaN 值填充它们。这是我所拥有的示例:

s = pd.Series([0, 1, np.nan, np.nan, np.nan, np.nan, 3])

以及我想要的示例:

s = pd.Series([0, 1, 1, 1, 3, 3, 3])

有谁知道我能做到吗?

谢谢!

您可以将 Series.interpolatemethod='nearest' 一起使用:

In [11]: s = pd.Series([0, 1, np.nan, np.nan, np.nan, np.nan, 3])

In [12]: s.interpolate(method='nearest')
Out[12]: 
0    0.0
1    1.0
2    1.0
3    1.0
4    3.0
5    3.0
6    3.0
dtype: float64

In [13]: s = pd.Series([0, 1, np.nan, np.nan, 2, np.nan, np.nan, 3])

In [14]: s.interpolate(method='nearest')
Out[14]: 
0    0.0
1    1.0
2    1.0
3    2.0
4    2.0
5    2.0
6    3.0
7    3.0
dtype: float64