【发布时间】:2020-08-25 16:58:38
【问题描述】:
我有一个与this one 类似的问题,但有一些不同/并发症
我有一个包含成员的组列表,而不是合并共享成员的组,我需要保留分组并根据哪些组具有共同成员创建一组新边,并根据组
源数据如下所示:
+---------+------------+------------+ |组号 |团体类型 |会员编号 | +---------+------------+------------+ |一个 |类型 1 | 1 | |一个 |类型 1 | 2 | |乙|类型 1 | 2 | |乙|类型 1 | 3 | | C |类型 1 | 3 | | C |类型 1 | 4 | | D |类型 2 | 4 | | D |类型 2 | 5 | +---------+------------+------------+想要的输出是这样的:
+----------+------------------+ |组号 |关联组 ID | +----------+------------------+ |一个 |乙| |乙| C | +----------+------------------+A 与 B 相关联,因为它共有 2 个 B 与 C 相关联,因为它共有 3 个 C 没有链接到 D,它有一个共同的成员,但属于不同的类型
共享成员的数量对我来说并不重要,一个共同的成员意味着他们是链接的
输出被用作图的边缘,所以如果输出是符合规则的图,那很好
源数据集很大(数亿行),因此需要考虑性能
This 提出了类似的问题,但是我是 Python 新手,不知道如何将源数据获取到可以使用答案的地步,或者在组类型的附加要求中工作匹配
【问题讨论】:
-
嗨,欢迎来到 SO。您的类似问题使用了不同的连接组件概念。根据您的要求,B 不应与 E 连接(不太可能回答建议),不是吗?组类型和成员 ID 是否也已排序?
-
谢谢你,在这里花了很多时间来获取提示,但这次真的很难过!示例中没有 E,如果这就是您的意思,就不会有模式?如果有帮助,可以从源头对组类型和成员 ID 进行排序
-
我的意思是您提到的链接中的一种解决方案应该是一个很好的例子,说明您的问题不等同于查找连接的组件(尤其是这个:stackoverflow.com/questions/46200969/…)。在其中一个答案中找到了
[A, C]和[B, D, E]组件,但B和E不是您想要的合适的一对。
标签: python networkx connected-components