pandas multi index sort直接排序

时间:2016-10-23 10:49:53

标签: python sorting pandas dataframe multi-index

我问了这个问题:pandas multi index sort specific fields作为后续跟进我想改进一点并直接用多指数进行排序:

这是一个样本df

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-index(更好的可视化表示)并获得如下结果:

          scoringValue          
                  mean       std
modelName                       
model2             8.0  1.414214 
model1             7.5  0.707107

1 个答案:

答案 0 :(得分: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