我有一个 numpy
一系列的 ints
. 我想填满 0
的系列中的缺失值。
原本,我将这些值放在了 pandas
数据框架,但为了简单起见,我决定用一个 numpy
数组代替。
>>> a = np.array([15, 25, 0, 45, 0, 0, 75, 85])
>>> a
>>> array([15, 25, 0, 45, 0, 0, 75, 85])
我希望输出为
>>> array([15, 25, 35, 45, 55, 65, 75, 85])
我想在解决这个问题的时候不使用循环,因为那样会失去使用 numpy
或 pandas
而且使用循环的代码会慢很多。
我不希望用新的值来替换整个列,因为这样做的副作用是会更新 0
的也是。
我只想更新 0
的缺失值。
这在pandas中是很直接的。你可以使用以下方法进行线性插值 interpolate
其默认的插值方法是 linear
):
a = np.array([15, 25, 0, 45, 0, 0, 75, 85])
s = pd.Series(a)
s.mask(s.eq(0)).interpolate()
0 15.0
1 25.0
2 35.0
3 45.0
4 55.0
5 65.0
6 75.0
7 85.0
dtype: float64