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

时间:2016-12-14 15:10:02

标签: python pandas dataframe

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

SAM
3
5
9
Nan
Nan
24
40
Nan
57

现在,我想分别在12值中插入1543Nan(因为9+3=1212+3=15和{ {1}})。换句话说,通过将40+3=43添加到上一行(也可以是Nan)来填充任何3行。

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

1 个答案:

答案 0 :(得分: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列的前向填充值添加到结果中。
相关问题