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

我有两个多级索引数据框。当我连接它们时,同名列会重复。


df1


Column

  col1 col2

     1    3

     2    4

我想将它与另一个 df 合并,


df2


Column

  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

任何帮助将非常感激。谢谢


四季花海
浏览 100回答 2
2回答

翻阅古今

使用DataFrame.sort_index:pd.concat([df1, df2], axis=1).sort_index(axis=1)编辑:print (df1)  Column         col5 col20      1    31      2    4print (df2)  Column    col10      51      6df = 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 col20      1    5    31      2    6    4EDIT1:与一起使用DataFrame.xs,DataFrame.sort_index添加原始非选定的caolumns值Index.union和最后更改顺序DataFrame.reindex:print (df)  Column              a         col2 col1 col5 col1 col30      1    5    3    5    41      2    6    4    7    7cols = (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 col30      3    1    5    5    41      4    2    6    7    7

慕田峪4524236

我们还可以使用DataFrame.combine_first:df3 = df1.combine_first(df2)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python