【问题标题】:Find out intersection of 2 pandas DataFrame according to 2 columns根据 2 列找出 2 个 pandas DataFrame 的交集
【发布时间】:2017-01-08 03:59:58
【问题描述】:

我会根据 2 列“x”和“y”找出 2 个熊猫数据帧的交集,并将它们组合成 1 个数据帧。数据是:

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

非常感谢!

【问题讨论】:

  • 你有没有尝试过?如果你有,那么在你的问题中提到它,并告诉你在哪一步失败了。请阅读How do I ask a good question。不管怎样,我们很多人都想帮助你,欢迎来到 StackOverflow :)
  • 谢谢提醒!下次我会加进去的!

标签: python pandas dataframe intersection


【解决方案1】:

您可以通过将df1df2 中的x,y 列连接起来找到交集,您可以通过内连接过滤df1df2,然后将两个结果与@987654328 连接起来@ 应该提供你所需要的:

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

【讨论】:

    【解决方案2】:

    最简单的解决方案:

    df1.columns.intersection(df2.columns)

    【讨论】:

      猜你喜欢
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 2019-08-10
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多