熊猫-卸货至最高专栏

时间:2020-01-21 16:08:50

标签: python pandas reshape

我有以下数据框:

df = pd.DataFrame({'Col1':[10,20,30,40,50], 'Col2':[60,70,80,90,100]}, index=pd.MultiIndex.from_arrays([['A','A','A','B','B'], [1,2,3,4,5]]))

我想获得以下信息:

'A'                'B' 
'Col1'  'Col2'    'Col1'   'Col2'
 10      60        NaN      NaN
 20      70        NaN      NaN
 30      80        NaN      NaN 
 NaN     NaN       40       90 
 NaN     NaN       50       100

我尝试使用df.unstack(0).swaplevel(0,1,axis=1),但结果是:

'A'     'B'       'A'      'B' 
'Col1'  'Col1'    'Col2'   'Col2'
10      NaN        60      NaN
20      NaN        70      NaN
30      NaN        80      NaN
NaN     40         NaN     90
NaN     50         NaN     100 

有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

sortlevel=0axis=1的索引中,您将拥有所需的视图:

df.unstack(0).swaplevel(0,1,axis=1).sort_index(axis=1)

   A           B       
   Col1  Col2  Col1   Col2
1  10.0  60.0   NaN    NaN
2  20.0  70.0   NaN    NaN
3  30.0  80.0   NaN    NaN
4   NaN   NaN  40.0   90.0
5   NaN   NaN  50.0  100.0