2015-11-13 2 views
2

У меня есть этот простой мультииндексных dataframe df, полученный после выполнения некоторых groupby.size() операций:панд - найти максимум многоуровневого dataframe

U G C 
1 1 en 0.600000 
    2 en 0.400000 
2 1 es 0.333333 
    3 es 0.500000 

Я хотел бы, чтобы замаскировать только строки, имеющие максимальное значение последнего столбца относительно колонку индекса U. До сих пор я пытался группирование по:

mask = df.groupby(level=[0]).max() 

, которая возвращает:

U 
1 0.6 
2 0.5 

, но я должен был бы всю структуру dataframe:

U G C 
1 1 en 
2 3 es 

Как я могу сбросить в некотором роде мультииндексный фрейм?

ответ

2

Для вашего df:

  data 
U G C   
1 1 en 0.600000 
    2 en 0.400000 
2 1 es 0.333333 
    3 es 0.500000 

Вы можете использовать

df[df['data'] == df.groupby(level=[0])['data'].transform(max)] 

который возвращает

 data 
U G C  
1 1 en 0.6 
2 3 es 0.5 
Смежные вопросы