Ведение порядка при распаковке в pandas - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть DataFrame, где индексом является DatetimeIndex

Применение value_counts () для каждого месяца:

NameCount = df.resample("M")["Name"].value_counts()

Date          Name

2019-12-31    Tom                   200
              Alle                  185
              Will                  93
              Jeff                  90
              Jerry                 68

2020-03-31    Alle                  629
              Jame                  385
              Will                  233
              Jerry                 113
              Tom                   99

Разблокировка Результат переставляет Name в алфавитном порядке:

NameCount.unstack().rename(lambda  x: x.strftime("%b %Y"))

Есть ли способ сохранить ордер из value_counts, где он был расположен в descending order

1 Ответ

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

Если хотите заказать по уникальным значениям второго уровня, используйте DataFrame.reindex:

c = NameCount.index.get_level_values(1).unique()
df = NameCount.unstack().rename(lambda  x: x.strftime("%b %Y")).reindex(columns=c)

print (df)
Nam         Tom   Alle   Will  Jeff  Jerry   Jame
Date                                             
Dec 2019  200.0  185.0   93.0  90.0   68.0    NaN
Mar 2020   99.0  629.0  233.0   NaN  113.0  385.0
...