合并两个重叠列上的两个数据框,同时保留不重叠的列

时间:2018-09-26 09:32:52

标签: python pandas dataframe merge

我目前有两个数据框:

df1:

     col1    col2   col3   col4
 0  Apple   store1    1      3
 1  Tree    store2    1      3
 2  Banana  store3    2      4
 3  Card    store4    2      4 ...

df2:

     col1    col2   col3   col4   col5   col6
 0  Apple   store1    1      3     123    50
 1  Tree    store2    1      3     451    32
 2  Mango   store2    2      4     313    15
 3  Guava   store5    2      4     113     9

我想做的是,如果前4列中的值相同,则将df1和df2合并在一起,但是我想将col5和col6的值附加到合并的数据帧上。因此理想的输出为:

merged_df:

     col1    col2   col3   col4   col5   col6
 0  Apple   store1    1      3     123    50
 1  Tree    store2    1      3     451    32 ...

当我尝试合并时,我在合并的数据帧上的col5和col6上返回了NaN值。有什么想法吗?

谢谢

3 个答案:

答案 0 :(得分:1)

您想要一个内部合并。默认情况下,将使用公共列进行合并:

res = df1.merge(df2, how='inner')

print(res)

    col1    col2  col3  col4  col5  col6
0  Apple  store1     1     3   123    50
1   Tree  store2     1     3   451    32

答案 1 :(得分:0)

您需要,

pd.merge(df1,df2,on=['col1','col2','col3','col4'])
[out]
#col1   col2    col3    col4    col5    col6
#Apple  store1  1       3       123     50
#Tree   store2  1       3       451     32

答案 2 :(得分:0)

这是一个具有多个联接键的更复杂的示例。因为默认情况下how ='inner',所以只显示左右键(相交)。

从熊猫文档开始:

  

result = pd.merge(left,right,on = ['key1','key2'])

result = pd.merge(def1, df2, on=['col1','col2','col3','col4'])