重新启动后的数据框列的累积总和

时间:2018-11-02 21:50:53

标签: python pandas dataframe

我想对数据框执行以下功能。

计算一列的总和,注意:

  1. 它仅查看上一个索引,不包括当前索引,例如第一个为零,因为没有以前的数据可以查看。

  2. 当不累计时(例如,增量为零),它将重新开始计数。

          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
    

我知道有一个扩展功能,但是看到零时它不会重新启动

1 个答案:

答案 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