首页 > 解决方案 > 部分交集 - 多个组

问题描述

我不确定如何解决我的问题,因此我无法查看它是否已经存在(提前道歉)

Group    Item
 A         1
 A         2
 A         3
 B         1
 B         3
 C         1
 D         2
 D         3

我想知道共享超过 X 个项目(本例中为 2 个)的所有组组合。我想知道他们共享哪些项目。

结果

A-B: 2 (item 1 and item 3)
A-D: 2 (item 2 and item 3)

组和项目的列表真的很长,跨组的最大项目匹配数可能不超过 3-5。

NB超过 2 个组可以有共享项目 - 例如 ABE: 3 所以一次只比较两个组是不够的。我需要比较所有组的组合。

我的想法

  1. 第一轮:所有组中的一堆 - 至少有两个值在所有人之间共享?
  2. 第二轮:All-1组(所有组合)
  3. 第三轮:全2组(所有组合)

直到我达到只有两组(所有组合)之间的比较。然而,这似乎超级沉重的性能明智!我不知道该怎么做。

你觉得呢?你有没有什么想法?

谢谢!

标签: pythonpython-3.xpandas

解决方案


这就是我处理问题的方法,它可能不是处理它的最有效方法,但它有明确的优点。

  1. 列出每个组,该组拥有的所有项目。
  2. 然后对于每对组,列出所有共享项(例如,对于组 A 的所有项,检查它是否是组 B 的一项)。
  3. 检查共享项目的数量是否高于您的阈值X

这不是一个现成的功能,但它应该很容易(或至少是一个很好的练习)实现。

玩得开心 !


推荐阅读