合并两个没有重复行的数据框的列

时间:2018-11-09 12:10:28

标签: python pandas dataframe join merge

你好,我想根据column的匹配值合并两个数据框。当我这样做时,它导致重复的行。

我的数据框如下:

df1:
  e_name   p1   p2  p3    
  e01      10   12  15
  e02      12   18  25
  e03      16   14  09

 df2:
  e_name   mean       
  e01      09 
  e02      11
  e03      15

预期输出:

 out1:
      e_name   p1   p2  p3   mean 
     e01      10   12  15   09  
     e02      12   18  25   11
     e03      16   14  09   15

我的代码:

  #Solution 1:
  out1 = pd.merge(df1, df2, how='inner', on='e_name')

   #Solution 2:
   out2 = summary_stats.merge(df1, df2, left_on='e_name', right_on='e_name')

两个解决方案均返回重复的行:

 e_name   p1   p2  p3   mean 
 e01      10   12  15   09
 e01      10   12  15   09  
 e02      12   18  25   11
 e02      12   18  25   11
 e03      16   14  09   15
 e03      16   14  09   15

如何获得没有重复行的解决方案?

1 个答案:

答案 0 :(得分:0)

我认为您需要通过drop_duplicates每列e_name删除第二个DataFrame中的重复项:

out1 = pd.merge(df1, df2.drop_duplicates('e_name'), on='e_name')

或两者皆有:

out1 = pd.merge(df1.drop_duplicates('e_name'), df2.drop_duplicates('e_name'), on='e_name')