首页 > 解决方案 > 如何根据numpy数组中的一系列数字用缺失值替换`0`?

问题描述

我有一个numpy包含一系列ints. 我想0用系列中的缺失值填充 s 。

最初,我将这些值放在数据框的列中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])

我想在不使用循环的情况下解决这个问题,因为这会破坏使用numpyor的目的,pandas并且使用循环的代码会慢得多。

我不想用新值替换整个列,这会作为副作用更新0s 。

我只想0根据系列用缺失值更新 s 。

标签: pythonarrayspandasnumpyseries

解决方案


这对熊猫来说是直截了当的。您可以使用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

推荐阅读