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().
您可以尝试这种矢量化方法:
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)
SAM列中的前向填充值添加到结果中.| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |