Pandas --通过计数器重置组

iibxawm4  于 2023-03-06  发布在  其他
关注(0)|答案(1)|浏览(124)

这个解决方案对我Count cumulative true Value不起作用,我明确地需要按idconsecBool分组;上述假设是一个同质数据集,没有不同的组
当一个布尔列为False时,我如何重置累计计数器?

df = pd.DataFrame({'id': [1, 1, 1, 1, 1, 1, 1],
              'consecDays': [0, 1, 1, 1, 0, 1, 1],
              'consecBool': [False, True, True, True, False, True, True],
              'expected': [0, 1, 2, 3, 0, 1, 2]})

df['Counter'] = df.groupby(['id', 'consecBool'])['consecDays'].cumsum()

expected是预期结果

id  consecDays  consecBool  expected  Counter
0   1           0       False         0        0
1   1           1        True         1        1
2   1           1        True         2        2
3   1           1        True         3        3
4   1           0       False         0        0
5   1           1        True         1        4
6   1           1        True         2        5
vc9ivgsu

vc9ivgsu1#

您可以尝试:

consecBool = df['consecBool'].eq(False).cumsum()  # or (~df['consecBool']).cumsum()
df['Counter'] = df.groupby(['id', consecBool])['consecDays'].cumsum()
print(df)

# Output
   id  consecDays  consecBool  expected  Counter
0   1           0       False         0        0
1   1           1        True         1        1
2   1           1        True         2        2
3   1           1        True         3        3
4   1           0       False         0        0
5   1           1        True         1        1
6   1           1        True         2        2

相关问题