根据2列找出2个pandas DataFrame的交集

时间:2017-01-08 03:59:58

标签: python pandas dataframe intersection

我会根据2列'x'和'y'找出2个pandas DataFrame的交集,并将它们组合成1个DataFrame。数据是:

df[1]:
    x   y       id    fa
0   4   5  9283222   3.1
1   4   5  9283222   3.1
2  10  12  9224221   3.2
3   4   5  9284332   1.2
4   6   1    51249  11.2

df[2]:
    x   y        id   fa
0   4   5  19283222  1.1
1   9   3  39224221  5.2
2  10  12  29284332  6.2
3   6   1     51242  5.2
4   6   2     51241  9.2
5   1   1     51241  9.2

预期输出类似于(可以忽略索引):

    x   y       id    fa
0   4   5  9283222   3.1
1   4   5  9283222   3.1
2  10  12  9224221   3.2
3   4   5  9284332   1.2
4   6   1    51249  11.2
0   4   5  19283222  1.1
2  10  12  29284332  6.2
3   6   1     51242  5.2

非常感谢!

2 个答案:

答案 0 :(得分:1)

您可以通过加入x,ydf1中的df2列来查找交叉点,您可以通过内部联接过滤df1df2 ,然后将这两个结果与pd.concat连接起来,应该得到你需要的东西:

intersection = df1[['x', 'y']].merge(df2[['x', 'y']]).drop_duplicates()
pd.concat([df1.merge(intersection), df2.merge(intersection)])

enter image description here

答案 1 :(得分:0)

最简单的解决方案:

df1.columns.intersection(df2.columns)