我想对数据框执行以下功能。
计算一列的总和,注意:
它仅查看上一个索引,不包括当前索引,例如第一个为零,因为没有以前的数据可以查看。
当不累计时(例如,增量为零),它将重新开始计数。
Number Cumulative
0 1 0
1 1 1
2 1 2
3 0 3
4 0 0
5 1 0
6 1 1
7 0 2
我知道有一个扩展功能,但是看到零时它不会重新启动
答案 0 :(得分:0)
IIUC,它的工作方式是根据上一行是否为0进行分组,然后获取累积计数:
>>> df
Number
0 1
1 1
2 1
3 0
4 0
5 1
6 1
7 0
df['Cumulative'] = df.groupby(df.Number.shift().eq(0).cumsum()).cumcount()
>>> df
Number Cumulative
0 1 0
1 1 1
2 1 2
3 0 3
4 0 0
5 1 0
6 1 1
7 0 2
或者,如果您确实要使用cumsum
,则使用与上述相同的分组应用cumsum,然后将其向下移动1:
df['Cumulative '] = df.groupby(df.Number.eq(0).cumsum()).cumsum().shift().fillna(0)
>>> df
Number Cumulative
0 1 0.0
1 1 1.0
2 1 2.0
3 0 3.0
4 0 0.0
5 1 0.0
6 1 1.0
7 0 2.0