pandas数据框中前一行的累积计数

时间:2018-05-04 19:03:20

标签: python pandas

我有一个这样的数据框:

 date   ID   flag
 Apr1   1    True
 Apr2   2    True
 May1   1    True
 May1   1    False
 May2   1    True

通缉标志为ID的前几天(包括当天)的累计点数True,如下所示:

 date   ID   flag   count
 Apr1   1    True   1
 Apr2   2    True   1
 May1   1    True   2
 May1   1    False  2
 May2   1    True   3

我尝试了布尔屏蔽和cumsum(),但没有让它工作。建议?

2 个答案:

答案 0 :(得分:1)

那不是cumcount您正在寻找groupbycumsum

df.groupby('ID').flag.cumsum().astype(int)
Out[362]: 
0    1
1    1
2    2
3    2
4    3
Name: flag, dtype: int32

答案 1 :(得分:0)

这似乎是你需要的:

df['count'] = df.groupby(by=['ID'])['flag'].cumsum().astype(int)

输出:

    date    ID  flag    count
0   Apr1    1   True    1
1   Apr2    2   True    1
2   May1    1   True    2
3   May1    1   False   2
4   May2    1   True    3