Нахождение максимальной строки после groupby в фрейме данных pandas

#pandas #python-3.8

Вопрос:

У меня есть рамка daframe следующего вида:

 Month Col1 Col2 Val A p a1 31 A q a1 78 A r b2 13 B x a1 54 B y b2 56 B z b2 65  

Я хочу получить следующее:

 Month a1 b2 A q r B x z  

По сути , для каждой пары Month и Col2 я хочу найти значение, в Col1 котором is имеет максимальное значение.

Я не уверен, как подойти к этому.

Ответ №1:

Ваша проблема в том, что:

  1. Найдите строку с максимальным Val значением внутри группы, которая является sort и drop_duplicates , и
  2. преобразуйте данные, которые pivot :
 (df.sort_values('Val')   .drop_duplicates(['Month','Col2'], keep='last')  .pivot(index='Month', columns='Col2', values='Col1') )  

Выход:

 Col2 a1 b2 Month  A q r B x z