Панды сгруппированы и сортируют максимальные значения - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь groupby два Columns в pandas df и вернуть значение max.Затем я надеюсь отсортировать эти max значения по отношению к тому же Columns.

Это моя попытка:

импортировать панд как pd

d = ({
'year' : ['2016','2016','2016','2016','2016','2015','2015','2015','2015','2014','2014','2014','2014'],        
    'Val' : ['A','B','D','T','S','D','T','T','U','T','T','V','C'],                 
    'Num' : [1,2,4,5,3,6,4,3,2,5,6,1,2],                                     
    })

df = pd.DataFrame(data = d)

df = df.groupby(['year','Val']).Num.max()

Вывод:

year  Val
2014  C      2
      T      6
      V      1
2015  D      6
      T      4
      U      2
2016  A      1
      B      2
      D      4
      S      3
      T      5

Я пытался это сделать, чтобы получить следующее

df = df.sort_values(['year','Num'], ascending=False)

Предполагаемый выход:

year  Val
2014  T      6
      C      2
      V      1
2015  D      6
      T      4
      U      2
2016  T      5
      D      4
      S      3
      B      2
      A      1

1 Ответ

1 голос
/ 26 марта 2019

Так что вам нужно groupby с transform sort_values

df.groupby('year').transform(pd.Series.sort_values,ascending=False)
Out[42]: 
year  Val
2014  C      6
      T      2
      V      1
2015  D      6
      T      4
      U      2
2016  A      5
      B      4
      D      3
      S      2
      T      1
Name: Num, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...