【问题标题】:pandas multi index sort directlypandas 多索引直接排序
【发布时间】:2017-03-05 06:23:26
【问题描述】:

我问了这个问题: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

我想按 scoreValue 的mean 对模型进行排序,但保留与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

【问题讨论】:

    标签: python sorting pandas dataframe multi-index


    【解决方案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
    

    【讨论】:

    • 太棒了!再次感谢。
    • @GeorgHeiler,当然!这是一个完美的问题 - 非常清晰且完全可重现(包括 python 代码) - 干得好! :)
    猜你喜欢
    • 2017-08-29
    • 2013-06-19
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2017-03-05
    • 1970-01-01
    相关资源
    最近更新 更多