为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英3389331 2022-09-13 20:01:04
我想合并以下数据帧:DF1:         value1   value2index    0       a0       b0    1       a1       b1    2       a2       b2    3       a3       b3DF2:         value1   value2index    0       c0       d0    1       c1       d1    2       c2       d2    3       c3       d3DF3:         value1   value2index    0       e0       f0    1       e1       f1    2       e2       f2    3       e3       f3我想将它们合并到一个数据帧中,我们一次从每个数据帧中获取一列。列应以第一级中的相同列名命名,并在第二级使用给定名称列表命名,其中此列表的大小与 DataFrame 的数量相同(在本例中为 3)。对于名称列表 [M1, M2, DIF],预期的数据帧将如下所示:         value1                     value2            M1       M2       DIF      M1       M2       DIFindex                                                  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最简单/最快捷的方法是什么?
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

让我们来做concat


df=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   C

index                              

0         a0  a0  a0     b0  b0  b0

1         a1  a1  a1     b1  b1  b1

2         a2  a2  a2     b2  b2  b2

3         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 DIF

index                              

0         a0  a0  a0     b0  b0  b0

1         a1  a1  a1     b1  b1  b1

2         a2  a2  a2     b2  b2  b2

3         a3  a3  a3     b3  b3  b3


查看完整回答
反对 回复 2022-09-13
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信