Вывод строк таблицы по максимальному значению из каждой группы

Есть вот такая таблица.Не получается вывести строки с максимальным значением "val_mae" для каждой компании ('Company') Буду благодарен за помощь)) просто общее понимание решения проблемы)

введите сюда описание изображения

таблица: https://yadi.sk/d/T6SAKNuoHYeedw


Ответы (1 шт):

Автор решения: Andrey

Можно сгруппировать датафрейм по столбцу Company и затем, с помощью метода idxmax(), найти в каждой группе индекс строки с максимальным значением val_mae:

In [20]: df.groupby('Company').val_mae.idxmax()
Out[20]: 
Company
AA       1
AES     34
AIG     70
APA    131
AUY    142
Name: val_mae, dtype: int64

Ну а дальше, используя iloc[], выбрать из датафрейма все строки с нужными индексами:

In [21]: df.iloc[df.groupby('Company').val_mae.idxmax()]
Out[21]: 
         loss       mse       mae  val_loss   val_mse   val_mae  Bias Company
1    0.034201  0.034201  0.129954  0.040765  0.040765  0.143848     4      AA
34   0.043737  0.043737  0.146484  0.061212  0.061212  0.163905     1     AES
70   0.300688  0.300688  0.370292  0.356461  0.356461  0.397615     7     AIG
131  0.113919  0.113919  0.228295  0.129619  0.129619  0.249188    88     APA
142  0.005302  0.005302  0.055548  0.006986  0.006986  0.063243    19     AUY
→ Ссылка