2015-03-02 2 views
3

Я хочу повернуть на dataframe как:Pivot Панда DataFrame в иерархию столбца иерархической столбцы/изменении

 dim1 Value_V  Value_y instance 
0  A_1  50.000000  0 instance200 
1  A_2 6500.000000  1 instance200 
2  A_3  50.000000  0 instance200 
3  A_4 4305.922313  1 instance200 

в dataframe с иерархическими столбцами так:

   A_1    A_2    A_3    ..... 
       Value_V Value_y Value_V Value_y Value_V Value_y 
instance200 50  0  6500  1  50  0 

Я попытался df = df.pivot(index = "instance", columns = "dim1"), но будет только дать мне такую ​​рамку:

   Value_V    Value_y        
       A_1 A_2 A_3 .... A_1 A_2 A_3 .... 
instance200 50 6500 50  0 1 0 

Как я могу изменить h иерархия колонн?

ответ

4

я понял это сам:

df = df.swaplevel(0,1,axis = 1).sort(axis = 1) 

будет делать

+0

ха-ха, хороший один , Я был избит как 10 секунд самостоятельно – Anzel

+0

Да, но спасибо за ваши усилия :) –

+1

в качестве примечания, ** swaplevel ** хорош для swa pping между 2, тогда как ** reorder_levels ** может выполнять несколько раз, если это помогает :) – Anzel

2

Что вам нужно reorder_levels, а затем отсортировать столбцы, например:

import pandas as pd 

df = pd.read_clipboard() 

df 
Out[8]: 
dim1 Value_V Value_y instance 
0 A_1 50.000000 0 instance200 
1 A_2 6500.000000 1 instance200 
2 A_3 50.000000 0 instance200 
3 A_4 4305.922313 1 instance200 
In [9]: 

df.pivot('instance', 'dim1').reorder_levels([1, 0], axis=1).sort(axis=1) 
Out[9]: 
dim1  A_1    A_2    A_3    A_4 
      Value_V Value_y Value_V Value_y Value_V Value_y Value_V Value_y 
instance         
instance200 50  0  6500 1  50  0  4305.922313 1 
+0

В случае, если кто-то сталкивается с: «Объект DataFrame» не имеет атрибута «сортировать» », посмотрите этот вопрос: https://stackoverflow.com/questions/44123874/dataframe-object-has-no-attribute-sort – kristian

Смежные вопросы