如何根据numpy数组中的一系列数字,用缺失的值替换`0`s?

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

我有一个 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])

我想在解决这个问题的时候不使用循环,因为那样会失去使用 numpypandas 而且使用循环的代码会慢很多。

我不希望用新的值来替换整个列,因为这样做的副作用是会更新 0的也是。

我只想更新 0的缺失值。

python arrays pandas numpy series
1个回答
3
投票

这在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
© www.soinside.com 2019 - 2024. All rights reserved.