代码之家  ›  专栏  ›  技术社区  ›  Felix

连接时向多索引添加新级别

  •  1
  • Felix  · 技术社区  · 6 年前

    一些大小、列和索引相同但内容稍有变化的数据帧被连接起来。生成新索引以使原始索引保持不变的最佳方法是什么,但最外面的索引现在表示连接的数据帧编号?

    DataFrame A:
    Idx1 | Idx2 || Col
    0      0       'A'
           1       'B'
    1      0       'C'
           1       'D'
    
    DataFrame B:
    Idx1 | Idx2 || Col
    0      0       'E'
           1       'F'
    1      0       'G'
           1       'H'
    
    DataFrame AB:
    Idx0 | Idx1 | Idx2 || Col
    0      0      0       'A'
                  1       'B'
           1      0       'C'
                  1       'D'
    1      0      0       'E'
                  1       'F'
           1      0       'G'
                  1       'H'
    

    我对索引和叠加还是不太满意,但我想这是必要的。非常感谢您的帮助!

    A = pd.DataFrame({'Col': ['A', 'B', 'C', 'D'], 'Idx1': [0,0,1,1], 'Idx2':[0,1,0,1]})
    B = pd.DataFrame({'Col': ['E', 'F', 'G', 'H'], 'Idx1': [0,0,1,1], 'Idx2':[0,1,0,1]})
    A.set_index(keys=['Idx1', 'Idx2'], inplace=True)
    B.set_index(keys=['Idx1', 'Idx2'], inplace=True)
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   root    6 年前

    使用 concat keys names 论据:

    pd.concat([A, B], keys=[0, 1], names=['Idx0'])
    

    结果输出:

                   Col
    Idx0 Idx1 Idx2    
    0    0    0      A
              1      B
         1    0      C
              1      D
    1    0    0      E
              1      F
         1    0      G
              1      H