Pandas MultiIndex DataFrame Sorting - PullRequest
1 голос
/ 11 апреля 2020

Я ищу способ сортировки столбца в DataFrame с несколькими уровнями индекса. В моем индексе DataFrame уровень 0 - это имя штата («STNAME»), а уровень индекса 1 - это название города («CTYNAME»).

Мой начальный DataFrame выглядит следующим образом:

In:

df = census_df
df = df.set_index(["STNAME" ,"CTYNAME"])
df = df.loc[: ,["CENSUS2010POP"]]
print(df.head())

Out:

                           CENSUS2010POP
STNAME  CTYNAME 
Alabama Alabama            4779736
        Autauga County     54571
        Baldwin County     182265
        Barbour County     27457
        Bibb County        22915

Однако, когда я пытаюсь применить сортировку к столбцу "CENSUS2010POP", он разрушает всю иерархию:

In:

df = census_df
df = df.set_index(["STNAME" ,"CTYNAME"])
df = df.loc[: ,["CENSUS2010POP"]]
df = df.sort_values("CENSUS2010POP")
print (df.head())

Out:

                                CENSUS2010POP
STNAME        CTYNAME   
Texas         Loving County     82
Hawaii        Kalawao County    90
Texas         King County       286
Kenedy        County            416
Nebraska      Arthur County     460

Мне интересно, есть ли способ сортировки уровней столбцов и индексов

Любая помощь будет высоко ценится

1 Ответ

0 голосов
/ 11 апреля 2020

Вы можете добавить STNAME к sort_values

df.sort_values(['STNAME','CENSUS2010POP'])

Для случайных данных:

np.random.seed(1)
df = pd.DataFrame({
    'STNAME':[0]*4+[1]*4,
    'CTYNAME':[0,1,2,3]*2,
    'CENSUS2010POP':np.random.randint(10,100,8)
}).set_index(['STNAME', 'CTYNAME'])

Вывод:

                CENSUS2010POP
STNAME CTYNAME               
0      3                   19
       1                   22
       0                   47
       2                   82
1      1                   15
       3                   74
       0                   85
       2                   89
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...