2016-10-23 2 views
1

Я задал этот вопрос: pandas multi index sort specific fields как следить я хотел бы улучшить немного и выполнить сортировку непосредственно с несколькими индексами:панды мульти индекс сортировки непосредственно

Вот образец ДФ

df = pd.DataFrame({'modelName':['model1','model1', 'model2', 'model2'], 
          'scoringValue':[7,8,9,7]}) 

Каких результатов в следующий обзоре

overview = df.groupby([df.modelName]).describe().unstack(fill_value=0).loc[:, pd.IndexSlice[:, ['mean','std']]] 
print(overview) 

      scoringValue   
        mean  std 
modelName      
model1    7.5 0.707107 
model2    8.0 1.414214 

Я хочу, чтобы сортировать модели mean из scoringValue, но сохраняет сгруппированные отношения к std

Это может быть достигнуто за счет

overview.columns = ['{0[0]}_{0[1]}'.format(tup) for tup in overview.columns] 
overview.sort_values('scoringValue_mean', ascending=False) 

Но я скорее хотел бы работать непосредственно с Multi-индексом (лучше визуальное представление) и получить результат, как этот:

  scoringValue   
        mean  std 
modelName      
model2    8.0 1.414214 
model1    7.5 0.707107 

ответ

1

Как насчет использования DataFrame.sort_index(level=1)?

In [77]: overview.sort_index(level=1, ascending=0) 
Out[77]: 
      scoringValue 
        mean  std 
modelName 
model2    8.0 1.414214 
model1    7.5 0.707107 
+0

отлично! Еще раз спасибо. –

+0

@GeorgHeiler, конечно! Это был прекрасный вопрос - очень понятный и полностью воспроизводимый (включая код Python) - хорошая работа! :) – MaxU

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