【问题标题】:Pandas: find duplicates in another dataframe based on a subsetPandas:根据子集在另一个数据框中查找重复项
【发布时间】:2020-07-04 01:03:20
【问题描述】:

假设 DF 1:

   A  B  C
0  1  1  1
1  1  1  2
2  2  1  1
3  1  9  0
4  9  9  9

还有 DF 2

   A  B  C
0  6  1  1
1  1  1  2
2  2  1  1
3  1  9  0
4  1  9  6

我想根据列的子集向 DF 1 添加一列,其中包含 DF 2 中的重复计数:

例如

复制

  • 1
  • 2

结果:

   A  B  C  Dupe
0  1  1  1   1
1  1  1  2   1
2  2  1  1   1
3  1  9  0   2
4  9  9  9   0

【问题讨论】:

  • 为什么 1 1 1 返回 1 和 1 9 0 返回 2 ?
  • 因为 DF2 中有 2 行具有 A:1 B:9,而 DF2 中有 1 行具有 A:1 B:1
  • 我有两个数据源 - 并希望确保我可以在 DF2 中找到 DF1 中的行,但只能在某些列上找到

标签: python pandas duplicates subset


【解决方案1】:

听起来你应该 groupby 由 df2 然后 merge

df=df1.merge(df2.groupby(['A','B']).size().to_frame('DUP').reset_index(),how='left').fillna(0)
   A  B  C  DUP
0  1  1  1  1.0
1  1  1  2  1.0
2  2  1  1  1.0
3  1  9  0  2.0
4  9  9  9  0.0

【讨论】:

  • 效果很好 - 如果其中一列是浮点数并且我想要一个小的容差怎么办?
  • @RML 然后你需要检查 merge_asof ~
  • 添加了一个列 astype('float').round(0) 然后在其上合并,然后 drop 效果很好,非常感谢!
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2016-08-07
  • 2022-12-15
  • 2021-08-04
相关资源
最近更新 更多