#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:
Ваша проблема в том, что:
- Найдите строку с максимальным
Val
значением внутри группы, которая являетсяsort
иdrop_duplicates
, и - преобразуйте данные, которые
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