为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用一个顶级列对多索引熊猫数据框进行排序?

如何使用一个顶级列对多索引熊猫数据框进行排序?

慕标琳琳 2021-09-24 15:38:32
我有一个这样的多索引数据集:                                           mean             std                                Happiness Score Happiness ScoreRegion                                                         Australia and New Zealand              7.302500        0.020936Central and Eastern Europe             5.371184        0.578274Eastern Asia                           5.632333        0.502100Latin America and Caribbean            6.069074        0.728157Middle East and Northern Africa        5.387879        1.031656North America                          7.227167        0.179331Southeastern Asia                      5.364077        0.882637Southern Asia                          4.590857        0.535978Sub-Saharan Africa                     4.150957        0.584945Western Europe                         6.693000        0.777886我想按标准偏差对其进行排序。我的尝试:import numpy as npimport pandas as pddf1.sort_values(by=('Region','std'))如何解决问题?
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

设置


np.random.seed(0)

df = pd.DataFrame(np.random.choice(10, (5, 2)))

df.columns = pd.MultiIndex.from_arrays([['mean', 'std'], ['Happiness Score'] * 2])


df

             mean             std

  Happiness Score Happiness Score

0               5               0

1               3               3

2               7               9

3               3               5

4               2               4

您可以使用argsort和重新索引df:


df.loc[:, ('std', 'Happiness Score')].argsort().values

# array([0, 1, 4, 3, 2])


df.iloc[df.loc[:, ('std', 'Happiness Score')].argsort().values]

# df.iloc[np.argsort(df.loc[:, ('std', 'Happiness Score')])]


             mean             std

  Happiness Score Happiness Score

0               5               0

1               3               3

4               2               4

3               3               5

2               7               9

另一个解决方案是sort_values,传递一个元组:


df.sort_values(by=('std', 'Happiness Score'), axis=0)


             mean             std

  Happiness Score Happiness Score

0               5               0

1               3               3

4               2               4

3               3               5

2               7               9

我认为您的想法是正确的,但是元组的顺序不正确。


查看完整回答
反对 回复 2021-09-24
  • 3 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号