2016-12-14 61 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列中的正向填充值添加到結果中。