如何仅基于外部索引转置多级 pandas 数据框

how to transpose multiple level pandas dataframe based only on outer index

下面是我的具有两级索引的数据框。我希望 'only' 将外部索引转置为列。我想要的输出是 2X2 数据帧,而不是现在的 4X1 数据帧。你们中的任何人都可以帮忙吗?

        0
0    0  232

     1  3453

1    0  443

     1  3241

一种方法是重置索引,然后在索引的 level_1 上旋转 table 索引,并使用 level_0 作为列和 0 作为值。示例 -

df.reset_index().pivot(index='level_1',columns='level_0',values=0)

演示 -

In [66]: index = pd.MultiIndex.from_tuples([(0,0),(0,1),(1,0),(1,1)])

In [67]: df = pd.DataFrame([[1],[2],[3],[4]] , index=index, columns=[0])

In [68]: df
Out[68]:
     0
0 0  1
  1  2
1 0  3
  1  4

In [69]: df.reset_index().pivot(index='level_1',columns='level_0',values=0)
Out[69]:
level_0  0  1
level_1
0        1  3
1        2  4

稍后,如果您愿意,可以将 indexcolumns.name 属性设置为空字符串或任何您想要的属性,如果您不这样做的话想要那里的 level_*

鉴于您拥有多索引,您可以在级别 0 上使用 unstack()。

import pandas as pd
import numpy as np

index = pd.MultiIndex.from_tuples([(0,0),(0,1),(1,0),(1,1)])
df = pd.DataFrame([[1],[2],[3],[4]] , index=index, columns=[0])

print df.unstack(level=[0])


   0   
   0  1
0  1  3
1  2  4