合并2个熊猫数据框,同时保留所有列

时间:2020-08-26 00:52:55

标签: python pandas

我正在尝试合并2个熊猫数据框。它们看起来像

DF1

col1        col2          col3           col4           col5
A            SAT           MON            5               3
B            MON           FRI            -1              2
C            FRI           TUE            8               4
D            TUE           WED            2               4

DF2

col1        col2          col3           col4           col5
A            SAT           MON            5               3
B            MON           FRI            -1              2
C            WED           THUR           8               4
D            THUR          SAT            2               4

想要的结果

col1        col2          col3           col4           col5        col1_2          col2_2        col3_2          col4_2        col5_2                
A            SAT           MON            5               3           A            SAT           MON            5               3
B            MON           FRI            -1              2           B            MON           FRI            -1              2
C            FRI           TUE            8               4
D            TUE           WED            2               4
                                                                      C            WED           THUR           8               4
                                                                      D            THUR          SAT            2               4                                                                              

我使用了merged_df = df1.merge(df2, on=['col1','col2','col3'], how='outer'),但是它给了我以下期望的结果,但是我不想要。我想要类似上面的结果。反正有得到我期望的结果吗?

结果

col1        col2          col3           col4           col5
A            SAT           MON            5               3
B            MON           FRI            -1              2
C            FRI           TUE            8               4
D            TUE           WED            2               4
C            WED           THUR           8               4
D            THUR          SAT            2               4

1 个答案:

答案 0 :(得分:1)

尝试使用combine_first

l=['col1','col2','col3']
df = df1.set_index(l).combine_first(df2.set_index(l)).reset_index()
df
Out[28]: 
  col1  col2  col3  col4  col5
0    A   SAT   MON   5.0   3.0
1    B   MON   FRI  -1.0   2.0
2    C   FRI   TUE   8.0   4.0
3    C   WED  THUR   8.0   4.0
4    D  THUR   SAT   2.0   4.0
5    D   TUE   WED   2.0   4.0