2017-01-11 3 views
1

У меня есть DataFrame, который выглядит следующим образом:Нахождение максимального значения для каждого уровня многоиндексной dataframe в

 data 
a b 
1 1 0.1 
    2 0.2 
    3 0.3 
2 1 0.5 
    2 0.6 
    3 0.7 

и я хочу, чтобы найти минимальное значение для каждого уровня a игнорирующего b уровня, так как выход, я ищу что-то вроде

a min 
1 0.1 
2 0.5 

ответ

1

Простейший является использование min с параметром level=0:

print (df.data.min(level=0).reset_index(name='min')) 
    a min 
0 1 0.1 
1 2 0.5 

Если выход потребность в df и только один столбец df:

print (df.min(level=0)) 
    data 
a  
1 0.1 
2 0.5 

Или groupby на первом уровне с агрегирование min:

print (df.groupby(level=0).data.min().reset_index(name='min')) 
    a min 
0 1 0.1 
1 2 0.5 
+0

Это работало, но я не нуждался в '.data 'бит, так что просто' df.min (level = 0) '. Большое спасибо! –

+0

Да, он тоже работает, я добавляю его в решение. – jezrael

Смежные вопросы