2016-12-14 57 views
6

我有一个名为SAM列中的数据帧具有以下数据填写NA值加入x到上一行熊猫

SAM 
3 
5 
9 
Nan 
Nan 
24 
40 
Nan 
57 

现在我想插入1215并在Nan43分别(因为9+3=12,12+3=1540+3=43)。换句话说,通过将3添加到前一行(其也可以是Nan)来填充任何Nan行。

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

+1

未来,请不要使用'
'来设置您的问题的格式。 – IanS

回答

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 
  1. 除以该系列中的缺失值成块,并添加3,6,9等,以根据每个块的长度丢失值的位置;
  2. SAM列中的正向填充值添加到结果中。