【问题标题】:Row wise merge dataframes with overlapping data in python/ pandas在 python/pandas 中按行合并数据帧与重叠数据
【发布时间】:2017-05-10 21:32:12
【问题描述】:

我有两个需要逐行合并的大型数据框。这两个数据帧可能有一些重叠的行。

例子:

data1
    key name               patent
    11  Alphagrep          112344
    12  Citrix             112345

data2
    Sr  name               patents
    11  Alphagrep          112344
    13  Taj                112322

我想在 [Key,Sr] 和 [专利, 专利] 上逐行合并这些数据帧

即:如果 row-data1[key]==row-data2[Sr] & row-data1[patent]==row-data2[patents],则合并或附加。

结果应该是:

data1 + data2
    key name               patent
    11  Alphagrep          112344
    12  Citrix             112345
    13  Taj                112322

在 pandas 中应该如何做到这一点?

【问题讨论】:

    标签: python pandas merge


    【解决方案1】:

    set_index 和 combine_first

    c1 = ['key', 'patent']
    c2 = ['Sr', 'patents']
    
    data1.set_index(c1) \
        .combine_first(
            data2.set_index(c2).rename_axis(c1)
        ).reset_index()
    
       key  patent       name
    0   11  112344  Alphagrep
    1   12  112345     Citrix
    2   13  112322        Taj
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      print data1, '\n', '\n', data2, '\n'
      data2.columns = data1.columns.tolist()
      data3 = pd.concat([data1, data2]).drop_duplicates()
      print data3
      

      输出:

         key       name  patent
      0   11  Alphagrep  112344
      1   12     Citrix  112345 
      
         Sr       name  patents
      0  11  Alphagrep   112344
      1  13        Taj   112322 
      
         key       name  patent
      0   11  Alphagrep  112344
      1   12     Citrix  112345
      1   13        Taj  112322
      

      【讨论】:

      • 这是解决此问题的好方法。但是,假设我们有一种情况,其中列无法同质化(列数不相等),那么我们将如何工作?有没有一种方法可以让我们提供参数并且只检查那些列
      • @user248884,您能否发布可重现示例数据集和所需的结果数据集?甚至更好 - 打开一个新问题...
      • 是的。创建一个特定案例并将其作为新问题发布。由于此解决方案适用于现有问题,您可以接受它:)
      猜你喜欢
      • 2016-10-17
      • 2019-02-26
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      相关资源
      最近更新 更多