【问题标题】:Replace DataFrame column index with MultiIndex [duplicate]用 MultiIndex 替换 DataFrame 列索引 [重复]
【发布时间】:2013-08-21 21:07:56
【问题描述】:

我有一个带有“扁平”列索引 ['Sample 1', 'Sample 2' ...] 的 pandas DataFrame,并且我构建了一个具有两个级别的 MultiIndex,其中第一个级别相同元素作为我的 DataFrame 的列索引('Sample 1' ...)。我想用这个 MultiIndex 替换我的 DataFrame 的列索引,MultiIndex 的每个元素都替换具有匹配名称的列索引元素。因此,标题为“Sample 1”的列现在应该标题为(“Sample 1”,“group x”),标题为“Sample 2”的列现在应该是('Sample 2','group 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

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

【问题讨论】:

    标签: python numpy pandas


    【解决方案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')]
    

    【讨论】:

      猜你喜欢
      • 2017-03-02
      • 2020-03-29
      • 1970-01-01
      • 2023-04-01
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2012-10-02
      相关资源
      最近更新 更多