合并多个熊猫数据帧,一次从每个数据帧中获取一列

我想合并以下数据帧:


DF1:

         value1   value2

index

    0       a0       b0

    1       a1       b1

    2       a2       b2

    3       a3       b3


DF2:

         value1   value2

index

    0       c0       d0

    1       c1       d1

    2       c2       d2

    3       c3       d3


DF3:

         value1   value2

index

    0       e0       f0

    1       e1       f1

    2       e2       f2

    3       e3       f3

我想将它们合并到一个数据帧中,我们一次从每个数据帧中获取一列。列应以第一级中的相同列名命名,并在第二级使用给定名称列表命名,其中此列表的大小与 DataFrame 的数量相同(在本例中为 3)。对于名称列表 [M1, M2, DIF],预期的数据帧将如下所示:


         value1                     value2

            M1       M2       DIF      M1       M2       DIF

index                                              

    0       a0       c0       e0       b0       d0       f0

    1       a1       c1       e1       b1       d1       f1

    2       a2       c2       e2       b2       d2       f2

    3       a3       c3       e3       b3       d3       f3

最简单/最快捷的方法是什么?


慕桂英3389331
浏览 67回答 1
1回答

慕姐8265434

让我们来做concatdf=pd.concat([df1,df1,df1],keys=list('ABC'),axis=1).swaplevel(0,1,axis=1).sort_index(level=0,axis=1)      value1         value2                   A   B   C      A   B   Cindex                              0         a0  a0  a0     b0  b0  b01         a1  a1  a1     b1  b1  b12         a2  a2  a2     b2  b2  b23         a3  a3  a3     b3  b3  b3更新l=['M1', 'M2', 'DIF']pd.concat([df1,df1,df1],keys=['M1', 'M2', 'DIF'],axis=1).swaplevel(0,1,axis=1).reindex(columns=pd.MultiIndex.from_product([list(df1),l]))      value1         value2                  M1  M2 DIF     M1  M2 DIFindex                              0         a0  a0  a0     b0  b0  b01         a1  a1  a1     b1  b1  b12         a2  a2  a2     b2  b2  b23         a3  a3  a3     b3  b3  b3
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python