поиск команд, забивающих самые высокие голы в каждом сезоне, с помощью групповых панд

#python #pandas #dataframe #pandas-groupby

Вопрос:

у меня есть такие данные:

     id  season      team                 wins   losses  goals
0   0   2006-2007   Manchester United    28     5       83
1   1   2006-2007   Chelsea              24     3       64  
2   2   2006-2007   Liverpool            20     10      57
.
.
238 238 2017-2018   Stoke City           7      19      35  
239 239 2017-2018   West Bromwich Albion 6      19      31  
 

я пытаюсь найти команды, забивающие самые высокие голы в каждом сезоне.

целевой выход:

         team                season              
        
        Manchester United   2006-2007           83
        
        Manchester United   2007-2008           80
        
        Liverpool           2008-2009           77
        .
        .
        Manchester City     2017-2018           106
 

Я пытался,

 df.groupby(['team','season'])['goals'].sum().sort_values(ascending = False).head(10)

team               season   
Manchester City    2017-2018    106
Chelsea            2009-2010    103
Manchester City    2013-2014    102
Liverpool          2013-2014    101
Manchester City    2011-2012     93
Manchester United  2011-2012     89
Tottenham Hotspur  2016-2017     86
Manchester United  2012-2013     86
                   2009-2010     86
Chelsea            2016-2017     85
Name: goals, dtype: int64
 

это дает мне в целом самые высокие голы, забитые командой за все сезоны. Год здесь повторяется, я не хочу, чтобы годы повторялись.

Ответ №1:

Если вы добавите дополнительные данные, это можно будет проверить. Это не сработает, если две команды в одном сезоне забьют одинаково высокие голы.

 df.sort_values('goals', ascending = False).groupby('season').first()

            id               team  wins  losses  goals
season
2006-2007    0  Manchester United    28       5   83.0
2017-2018  238         Stoke City     7      19   35.0
 

Комментарии:

1. второй команды нет. статистика каждой команды упоминается в каждом сезоне. Посмотрите на это еще раз внимательно.

2. этот набор данных не является фиксированным. Это статистика команды.

3. Спасибо, мне удалось сделать это сверху одного. —most_G = df.значения сортировки(«цели», по возрастанию = False).groupby(«сезон»).first() —most_G [[«команда», «цели»]]- — — но я тоже хочу видеть более точные решения.