Кумулятивная частота появления строк

Для начала немного о моей проблеме.

У меня есть данные о победителях Кубка Лиги чемпионов, проиндексированные по годам.

Таким образом, названия команд записок являются строками.

year    team         need this         year    team      wins to date

1       team1                           1       team1          1
2       team2                           2       team2          1
3       team1                           3       team1          2
4       team3                           4       team3          1

Я хотел бы создать новый столбец с кумулятивными выигрышами, чтобы я мог затем построить линейный график каждой команды и количество раз, когда они выиграли кубок. т.е. мне нужен год по оси x и кумулятивная частота по y, с 4 разными строками для 4 лучших команд.

Вероятно, есть простой способ использования функции count и цикла, но я довольно плохо знаком с Python и не очень хорошо разбираюсь в них. Любая помощь приветствуется!

2 ответа

Решение

Посмотрите на документацию панд на groupby, transform, cumcount, а также cumsum ( http://pandas.pydata.org/pandas-docs/stable/groupby.html). Вы можете сгруппировать команду и использовать transform, чтобы выполнить cumsum on bool, независимо от того, является ли команда нулевой или нет.

df

Входные данные:

   year   team
0     1  team1
1     2  team2
2     3  team1
3     4  team3

Сделать преобразование

df['wins to date'] = df.groupby('team').transform(lambda x: x.notnull().cumsum())
df

или как DSM предлагает:

df['wins to date'] = df.groupby('team').cumcount()+1

выход

   year   team  wins to date
0     1  team1             1
1     2  team2             1
2     3  team1             2
3     4  team3             1

Я думаю, что вы просто хотите использовать groupby с Series.cumsum, Как в:

df.groupby('team').cumsum()
Другие вопросы по тегам