我有一个这样的数据框:
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()
,但没有让它工作。建议?
答案 0 :(得分:1)
那不是cumcount
您正在寻找groupby
和cumsum
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