行智能合并数据帧与python / pandas中的重叠数据

时间:2016-12-26 11:53:52

标签: python pandas merge

我有两个大型数据框,我需要按行合并。这两个数据帧可能有几个重叠的行。

示例:

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 [专利] == row-data2 [专利],合并或者附加。

结果应该是:

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

如何在熊猫中做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以这样做:

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

答案 1 :(得分:1)

set_indexcombine_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