共享公共元素的链接列表

我有一个包含成员的组列表,而不是合并共享成员的组我需要保留分组并根据哪些组具有共同成员创建一组新的边,并根据组的属性有条件地这样做

源数据如下所示:

+----------+------------+-----------+

| Group ID | Group Type | Member ID |

+----------+------------+-----------+

| A        | Type 1     |         1 |

| A        | Type 1     |         2 |

| B        | Type 1     |         2 |

| B        | Type 1     |         3 |

| C        | Type 1     |         3 |

| C        | Type 1     |         4 |

| D        | Type 2     |         4 |

| D        | Type 2     |         5 |

+----------+------------+-----------+

期望的输出是这样的:


+----------+-----------------+

| Group ID | Linked Group ID |

+----------+-----------------+

| A        | B               |

| B        | C               |

+----------+-----------------+

A 链接到 B 因为它共享 2 B 链接到 C 因为它共享 3 C 不链接到 D,它有一个共同的成员但属于不同类型


共享成员的数量对我来说并不重要,一个共同的成员意味着他们是链接的


输出被用作图的边,所以如果输出是符合规则的图,那很好


源数据集很大(数亿行),因此性能是一个考虑因素


这提出了一个类似的问题,但是我是 Python 的新手,无法弄清楚如何将源数据获取到可以使用答案的地步,或者在组类型匹配的附加要求中工作


摇曳的蔷薇
浏览 135回答 1
1回答

慕姐4208626

尝试这样的事情-df1=df.groupby(['Group Type','Member ID'])['Group ID'].apply(','.join).reset_index() df2=df1[df1['Group ID'].str.contains(",")]这可能无法处理循环分组的情况。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python