#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 [[«команда», «цели»]]- — — но я тоже хочу видеть более точные решения.