用MultiIndex替换DataFrame列索引

时间:2013-08-19 23:03:12

标签: python numpy pandas

我有一个带有“平面”列索引的pandas DataFrame,['Sample 1','Sample 2'...],我构建了一个具有两个级别的MultiIndex,第一个具有相同的元素作为我的DataFrame的列索引('Sample 1'...)。我想用我的MultiIndex替换我的DataFrame的列索引,MultiIndex的每个元素替换具有匹配名称的列索引元素。因此,以“样品1”为标题的列现在应该以('样品1','组x')为标题,标题为'样品2'的列现在应该是('样品2','组x'),并且等等。

例如,DataFrame可能如下所示:

         A    B    C
row1     1    2    3
row2     4    5    6
  :
rowN     7    8    9

MultiIndex看起来像[('A', 'G1'), ('B', 'G1'), ('C', 'G2')]

最终结果如下:

        G1   G1   G2
         A    B    C
row1     1    2    3
row2     4    5    6
  :
rowN     7    8    9

似乎这应该是一个简单的连接或匹配连接,但找不到方法(和/或关键字)来做它。

1 个答案:

答案 0 :(得分:1)

只需分配到columns实例属性

即可
In [10]: df = DataFrame(randn(10, 3), columns=list('abc'))

In [11]: df.columns = [list('ABC'), df.columns]

In [12]: df
Out[12]:
       A      B      C
       a      b      c
0  2.320 -1.670  0.511
1  0.350 -1.877  0.627
2  1.671  0.347  1.328
3  0.896 -0.061  0.083
4  1.168  1.212 -1.127
5 -0.015  0.402  0.249
6 -0.576  0.898 -0.464
7 -0.939  0.198 -2.698
8 -0.767  0.532 -0.369
9  0.365  0.293 -0.676

In [13]: df.columns
Out[13]:
MultiIndex
[(u'A', u'a'), (u'B', u'b'), (u'C', u'c')]