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

熊猫连接多级索引数据框并合并同一级别内的同名列

熊猫连接多级索引数据框并合并同一级别内的同名列

四季花海 2023-02-07 11:12:10
我有两个多级索引数据框。当我连接它们时,同名列会重复。df1Column  col1 col2     1    3     2    4我想将它与另一个 df 合并,df2Column  col3     5     6当我合并两者时pd.concat([df1, df2], axis=1)结果来了:Column      Column  col1 col2   col3     1    3      5     2    4      6我想要得到的是:Column        col1 col2 col3     1    3    5     2    4    6任何帮助将非常感激。谢谢

2 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

使用DataFrame.sort_index


pd.concat([df1, df2], axis=1).sort_index(axis=1)

编辑:


print (df1)

  Column     

    col5 col2

0      1    3

1      2    4


print (df2)

  Column

    col1

0      5

1      6



df = pd.concat([df1, df2], axis=1)


c = df.columns.tolist()

df = df.reindex(c[:1] + sorted(c[1:]), axis=1)

print (df)

  Column          

    col5 col1 col2

0      1    5    3

1      2    6    4

EDIT1:与一起使用DataFrame.xsDataFrame.sort_index添加原始非选定的caolumns值Index.union和最后更改顺序DataFrame.reindex


print (df)

  Column              a     

    col2 col1 col5 col1 col3

0      1    5    3    5    4

1      2    6    4    7    7


cols = (df.xs('Column', drop_level=False, axis=1, level=0)

          .sort_index(ascending=False, axis=1).columns)

print (cols)

MultiIndex([('Column', 'col5'),

            ('Column', 'col2'),

            ('Column', 'col1')],

           )


df = df.reindex(cols.union(df.columns, sort=False), axis=1)

print (df)

  Column              a     

    col5 col2 col1 col1 col3

0      3    1    5    5    4

1      4    2    6    7    7


查看完整回答
反对 回复 2023-02-07
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

我们还可以使用DataFrame.combine_first

df3 = df1.combine_first(df2)


查看完整回答
反对 回复 2023-02-07

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号