pandas多索引直接排序
pandas multi index sort directly
我问了这个问题:作为后续我想改进一点,直接用多索引进行排序:
这是一个样本 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
对模型进行排序,但保留与 std
的分组关系
这可以通过
实现
overview.columns = ['{0[0]}_{0[1]}'.format(tup) for tup in overview.columns]
overview.sort_values('scoringValue_mean', ascending=False)
但我更愿意直接使用多索引(更好的视觉表示)并得到这样的结果:
scoringValue
mean std
modelName
model2 8.0 1.414214
model1 7.5 0.707107
使用 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
我问了这个问题:
这是一个样本 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
对模型进行排序,但保留与 std
这可以通过
实现overview.columns = ['{0[0]}_{0[1]}'.format(tup) for tup in overview.columns]
overview.sort_values('scoringValue_mean', ascending=False)
但我更愿意直接使用多索引(更好的视觉表示)并得到这样的结果:
scoringValue
mean std
modelName
model2 8.0 1.414214
model1 7.5 0.707107
使用 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