2017-09-29 2 views
0

メイン列を交互に表示するのではなく、値の列を交互に使用するPandas DataFrameからレポートを生成したいとします。たとえば、このコードを与えられた:私はこの出力を得るパンダピボットテーブルの列の値を交互に取得するにはどうすればよいですか?

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'])) 

を:これを達成するために、任意の合理的な方法

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 

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

しかし、私はこのようなものを好むだろうか?

答えて

1

最初に行うことは、マルチインデックスデータフレームのレベルを交換することです。その後、それを並べ替える必要があります。

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 
関連する問題