通过将x添加到上一行pandas来填充na值

Vij*_*P R 6 python dataframe pandas

我有一个数据框,其中包含一个名为SAM的列,其中包含以下数据

SAM
3
5
9
Nan
Nan
24
40
Nan
57
Run Code Online (Sandbox Code Playgroud)

现在我想插入12,15并43分别在Nan值(因为9+3=12,12+3=15和40+3=43).换句话说,Nan通过添加3到前一行(也可以是Nan)来填充任何行.

我知道这可以通过迭代for循环来完成.但我们能以矢量化的方式做到吗?像一些修改版本ffill(如果我们没有连续的NaN,可以在这里使用)pandas.fillna().

Psi*_*dom 7

您可以尝试这种矢量化方法:

nul = df['SAM'].isnull()
nul.groupby((nul.diff() == 1).cumsum()).cumsum()*3 + df['SAM'].ffill()

#0     3.0
#1     5.0
#2     9.0
#3    12.0
#4    15.0
#5    24.0
#6    40.0
#7    43.0
#8    57.0
#Name: SAM, dtype: float64
Run Code Online (Sandbox Code Playgroud)
  1. 将系列中的缺失值除以块,并根据每个块的长度将3,6,9等添加到缺失值位置;
  2. 将SAM列中的前向填充值添加到结果中.