for example : I have,
df = pd.DataFrame({0: [420, np.nan, 455, np.nan, np.nan, np.nan]})
df
0
0 420.0
1 NaN
2 455.0
3 NaN
4 NaN
5 NaN
then using :
df[0].isnull().astype(int)
0 0
1 1
2 0
3 1
4 1
5 1
Name: 0, dtype: int64
I get
df[0].fillna(method='ffill') - df[0].isnull().astype(int)
0 420.0
1 419.0
2 455.0
3 454.0
4 454.0
5 454.0
Name: 0, dtype: float64
I am looking for to get 0,1,0,1,2,3, then in the end :
df[0]= 420, 419, 455; 454,453, 452
If you can using
cumsum
as wellgroupby
,cumcount
Details
Define groups Use ingroupby
withcumcount