2016-02-16 24 views

Trả lời

2

Bạn cần phải unstack bạn mức chỉ số hiện tại Foo, ngăn xếp cột mong muốn của bạn 'Coo', và sau đó sắp xếp lại các mức chỉ số. Sau khi trao đổi các mức chỉ mục của bạn, bạn có thể muốn sắp xếp nó. Như một liên lạc cuối cùng, bạn có thể muốn bỏ tên cột của tất cả các giá trị (val).

df = (pd.DataFrame({'Foo': [124, 124, 134, 134] * 2, 
        'Bar': [1, 2, 1, 2] * 2, 
        'Coo': ['BAZ'] * 4 + ['PAL'] * 4, 
        'val': list('ACEGBDFH')}) 
     .set_index(['Foo', 'Bar', 'Coo']) 
     .unstack('Coo')) 

>>> df 
     val  
Coo  BAZ PAL 
Foo Bar   
124 1  A B 
    2  C D 
134 1  E F 
    2  G H 

df = df.unstack('Foo').stack('Coo') 
df.index = df.index.swaplevel(0, 1) 

>>> df 
     val  
Foo  124 134 
Coo Bar   
BAZ 1  A E 
PAL 1  B F 
BAZ 2  C G 
PAL 2  D H 

df.sort_index(inplace=True) 

>>> df 
     val  
Foo  124 134 
Coo Bar   
BAZ 1  A E 
    2  C G 
PAL 1  B F 
    2  D H 

df.columns = df.columns.droplevel() 

>>> df 
Foo  124 134 
Coo Bar   
BAZ 1  A E 
    2  C G 
PAL 1  B F 
    2  D H 
+0

Cảm ơn bạn. Nó hoàn toàn hoạt động. –

+0

Rất vui khi được giúp đỡ. – Alexander

Các vấn đề liên quan