我有一个数据框
import pandas as pd
data = {'a': [1,2,3,None,4,None,2,4,5,None]}
df = pd.DataFrame(data)
print(df)
a
0 1.0
1 2.0
2 3.0
3 NaN
4 4.0
5 NaN
6 2.0
7 4.0
8 5.0
9 NaN
我想增加数值直到NaN出现。一旦获得NaN,它将停止并从头开始。
a b
0 1.0 6
1 2.0 6
2 3.0 6
3 NaN NaN
4 4.0 4
5 NaN NaN
6 2.0 11
7 4.0 11
8 5.0 11
9 NaN NaN
我该如何实现?
预先感谢
答案 0 :(得分:3)
使用cumsum
创建groupby
键,然后使用transform
mask
df.a.groupby(df.a.isnull().cumsum()).transform('sum').mask(df.a.isnull())
0 6.0
1 6.0
2 6.0
3 NaN
4 4.0
5 NaN
6 11.0
7 11.0
8 11.0
9 NaN
Name: a, dtype: float64