簡體   English   中英

如何使用一個頂級列對多索引熊貓數據框進行排序?

[英]How to sort multi-index pandas data frame using one top level column?

我有一個這樣的多索引數據集:

                                           mean             std
                                Happiness Score Happiness Score
Region                                                         
Australia and New Zealand              7.302500        0.020936
Central and Eastern Europe             5.371184        0.578274
Eastern Asia                           5.632333        0.502100
Latin America and Caribbean            6.069074        0.728157
Middle East and Northern Africa        5.387879        1.031656
North America                          7.227167        0.179331
Southeastern Asia                      5.364077        0.882637
Southern Asia                          4.590857        0.535978
Sub-Saharan Africa                     4.150957        0.584945
Western Europe                         6.693000        0.777886

我想按標准偏差對其進行排序。

我的嘗試:

import numpy as np
import pandas as pd

df1.sort_values(by=('Region','std'))

如何解決問題?

設置

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和 reindex 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

我認為您的想法是正確的,但是元組的順序不正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM