用两个具有相同索引和列的数据框创建新的数据框

时间:2020-04-08 16:55:32

标签: pandas

我有两个数据帧(df1,df2):

df1:

    col1   col2   col3   col4
A      1      2      3      4       
B      1      2      3      4
C      1      2      3      4
D      1      2      3      4

df2:

    col1   col2   col3   col4
A      2      4      6      8       
B      2      4      6      8
C      2      4      6      8
D      2      4      6      8

我想实现这一目标:

new_df:`

         col1     col2     col3     col4
     df1  df2  df1 df2  df1 df2  df1 df2
A      1    2    2   4    3   6    4   8       
B      1    2    2   4    3   6    4   8
C      1    2    2   4    3   6    4   8
D      1    2    2   4    3   6    4   8

我尝试了一些多索引方法,但无法获得所需的输出。 我该怎么办?

1 个答案:

答案 0 :(得分:2)

pd.concat(包含键),swaplevel(包含sort_index上的axis=1

l = ['df1','df2']
out = pd.concat((df1,df2),axis=1,keys=l).swaplevel(axis=1).sort_index(axis=1)

  col1     col2     col3     col4    
   df1 df2  df1 df2  df1 df2  df1 df2
A    1   2    2   4    3   6    4   8
B    1   2    2   4    3   6    4   8
C    1   2    2   4    3   6    4   8
D    1   2    2   4    3   6    4   8 

另一种可能的方法是df.join并通过拆分列创建多索引,然后对索引进行排序,但第一个索引更干净;

out1 = df1.join(df2,lsuffix='_df1',rsuffix='_df2')
out1.columns = out1.columns.str.split('_',expand=True)
out1 = out1.sort_index(axis=1)