Расчет продолжающейся серии побед в кадре данных с помощью Python PandasPython

Программы на Python
Anonymous
Расчет продолжающейся серии побед в кадре данных с помощью Python Pandas

Сообщение Anonymous »

У меня есть набор данных о спортивных матчах следующего вида:

Код: Выделить всё

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()
Происходит следующее: всякий раз, когда полоса заканчивается, в столбец полосы успешно вводится 0, но затем полоса возобновляет свое предыдущее значение, как на изображении:
Изображение

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

Любая помощь в распаковке будет очень признательна!

Подробнее здесь: https://stackoverflow.com/questions/783 ... hon-pandas

Вернуться в «Python»