Код: Выделить всё
winner = ['A', 'A', 'B', 'C', 'A', 'C', 'C', 'B']
loser = ['B', 'C', 'A', 'A', 'B', 'A', 'B', 'C']
P1 = ['A', 'A', 'A', 'A', 'A', 'A', 'B', 'B']
P2 = ['B', 'C', 'B', 'C', 'B', 'C', 'C', 'C']
P1_win = [ 1, 1, 0, 0, 1, 0, 0, 0]
df = pd.DataFrame({'winner': winner, 'loser': loser, 'P1':P1, 'P2':P2, 'P1_win':P1_win})
df

Я хочу рассчитать текущие серии побед для P1 и P2. Однако когда я это делаю, полоса не сбрасывается, когда P_win == 0.
Код, который я использую для расчета полос:
Код: Выделить всё
condition = df.P1_win.eq(0)
df['Reset'] = condition.groupby(df.P1_win).cumsum() #reset need to be 0. If P_win == 0, reset the line
df['P1_win_Streak'] = df.P1_win.mask(condition, 0).groupby([df.winner, df.Reset]).cumsum()

В мой фактический набор данных выглядит следующим образом:

Любая помощь в распаковке будет очень признательна!
Подробнее здесь: https://stackoverflow.com/questions/783 ... hon-pandas