2017-09-29 2 views
0

Ich möchte einen Bericht von einem Pandas DataFrame erzeugen, der abwechselnd Wertspalten verwendet, anstatt die Hauptspalte zu wechseln. Zum Beispiel diesen Code gegeben:Wie erhalten Sie Spalten mit alternierenden Werten in einer Pandas Pivot-Tabelle?

import pandas as pd 
data = [('a1', 'b1', 1, 2), 
     ('a1', 'b2', 3, 4), 
     ('a1', 'b3', 5, 6), 
     ('a2', 'b1', 7, 8), 
     ('a2', 'b2', 9, 10), 
     ('a2', 'b3', 11, 12)] 

df = pd.DataFrame(data, columns=['A', 'B', 'X', 'Y']) 
print(pd.pivot_table(df, index='A', columns=['B'])) 

ich diese Ausgabe erhalten:

X   Y   
B b1 b2 b3 b1 b2 b3 
A      
a1 1 3 5 2 4 6 
a2 7 9 11 8 10 12 

aber, würde ich so etwas wie dies bevorzugen:

B b1 b2  b3 
    X Y X Y X Y   
A      
a1 1 2 3 4 5 6 
a2 7 8 9 10 11 12 

Jeder vernünftige Weg, um dies zu erreichen?

Antwort

1

Als Erstes tauschen Sie die Ebenen Ihres MultiIndex-Datenrahmens aus. Dann musst du es sortieren.

In [1]: pd.pivot_table(df, index='A', columns=['B']).swaplevel(axis=1).sort_index(axis=1) 
Out[1]: 
B b1 b2  b3 
    X Y X Y X Y 
A 
a1 1 2 3 4 5 6 
a2 7 8 9 10 11 12 
Verwandte Themen