【问题标题】:Merge columns of two dataframes without duplicate rows合并两个数据框的列而不重复行
【发布时间】:2018-11-09 12:10:28
【问题描述】:

您好,我想根据 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

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

【问题讨论】:

    标签: python pandas dataframe join merge


    【解决方案1】:

    我认为您需要通过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')
    

    【讨论】:

      猜你喜欢
      • 2017-11-26
      • 2017-11-13
      • 2018-09-04
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2021-03-22
      • 2021-11-28
      相关资源
      最近更新 更多