сгруппировать по нескольким столбцам и получить сумму и количество - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь создать единый фрейм данных, в котором можно визуализировать 5 символов частого бана по году, сезону и лиге. Мой начальный df выглядит так:

    League  Year    Season  ban_1   ban_2   ban_3   ban_4   ban_5
0   NALCS   2015    Spring  Rumble  Kassadin Lissandra NaN NaN
1   NALCS   2015    Spring  Tristana Leblanc Nidalee NaN NaN
2   NALCS   2015    Spring  Kassadin Sivir  Lissandra NaN NaN
3   NALCS   2015    Spring  RekSai  Janna   Leblanc NaN NaN
4   NALCS   2015    Spring  JarvanIV Lissandra Kassadin NaN NaN

, и я хочу, чтобы в конце он выглядел примерно так:

Year    Season  League  Top 5 bans
2015    Spring  EULCS   [(Zed, 49), (Kassadin, 39), (Cassiopeia, 34), (RekSai, 33), (Nidalee, 30)]

На данный момент я пытался сделать это любымсмысл, поэтому я попробовал это:

bans_info.groupby(['Year','Season', 'League', 'ban_1', 'ban_2', 'ban_3', 'ban_4', 'ban_5',]).sum()

и это:

bans_info.groupby (['Year', 'Season', 'League']). ban_1.value_counts (), но все жене получить его в конце, я попытался сделать это отдельно, но это становится слишком грязным

b1 = bans_info.groupby(['Year', 'Season', 'League']).ban_1.value_counts()
b2 = bans_info.groupby(['Year', 'Season', 'League']).ban_2.value_counts()
b12 = pd.merge(b1, b2, how='outer', on ='Year')

1 Ответ

1 голос
/ 14 октября 2019

Вам нужно использовать .agg, а затем передать в словарь имен столбцов и функций.

Подробнее вы можете найти здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...