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

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

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

四季花海 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
  • 2 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

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