Pandas 连接多级索引数据帧,并在同一级别内合并相同名称的列



我有两个多级索引数据帧。当我连接它们时,相同的名称列变得重复。

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

任何帮助将不胜感激。谢谢

使用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一起使用,按Index.union添加原始未选择的 caolums 值,按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

我们也可以使用DataFrame.combine_first

df3 = df1.combine_first(df2)

最新更新