在Pandas数据透视表中设置多级索引

时间:2018-09-20 00:50:42

标签: python pandas pivot

我有一个看起来像这样的数据框:

enter image description here

,可以查看和下载here

我正在尝试调整数据框,以使“ DISTRICT”是索引的第一级,而“空白”,“ CON”,“ DEM”,“ GRE”,“ IND”,“ OTH”,“ REF” ,“ REP”,“ WEP”,“ WOR”列是多级索引的第二级。然后,我想将“状态”列设置为水平列“活动”和“无效”。我写了以下代码:

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 :(得分:1)

我认为需要set_indexunstack,但随后需要转置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