Установка многоуровневого индекса в сводной таблице Pandas - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть датафрейм, который выглядит следующим образом:

enter image description here

, его можно просмотреть и загрузить здесь .

Я пытаюсь повернуть этот фрейм данных таким образом, чтобы «DISTRICT» был первым уровнем индекса, а «BLANK», «CON», «DEM», «GRE», «IND», «OTH», «REF», Столбцы «REP», «WEP», «WOR» являются вторым уровнем многоуровневого индекса.Затем я хотел установить для столбца «STATUS» горизонтальные столбцы «Active» и «Inactive».Я написал следующий код:

active_inactive8.pivot(index=['DISTRICT', 'DEM', 'REP', 'CON', 'GRE',
                              'WOR', 'IND', 'WEP', 'REF', 'OTH', 'BLANK'],
                       columns='STATUS')

, но получил ошибку: ValueError: all arrays must be same length.

Я также попытался .melt безуспешно.

1 Ответ

0 голосов
/ 20 сентября 2018

Я считаю, что нужно set_index с unstack, но затем необходимо транспонировать, swaplevel и последний sort_index:

df = pd.read_csv('active_inactive8.csv', index_col=0)

df2 = df.set_index(['STATUS','DISTRICT']).unstack().T.swaplevel(1,0).sort_index()

df2 = df.pivot(index='STATUS', columns='DISTRICT').T.swaplevel(1,0).sort_index()


print (df2.head(10))
STATUS            Active  Inactive
DISTRICT                          
1        BLANK  128547.0    8436.0
         CON     11778.0     643.0
         DEM    144470.0   10086.0
         GRE      1108.0      96.0
         IND     23245.0    1545.0
         OTH       394.0      28.0
         REF        41.0       3.0
         REP    162308.0    8290.0
         WEP       150.0       5.0
         WOR      2066.0     130.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...