Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 共享公共元素的链接列表_Python_Networkx_Connected Components - Fatal编程技术网

Python 共享公共元素的链接列表

Python 共享公共元素的链接列表,python,networkx,connected-components,Python,Networkx,Connected Components,我有一个类似的问题,但有一些不同之处/复杂之处 我有一个包含成员的组列表,而不是合并共享成员的组。我需要保留组并创建一组新的边,根据这些边,组有共同的成员,并根据组的属性有条件地这样做 源数据如下所示: +----------+------------+-----------+ | Group ID | Group Type | Member ID | +----------+------------+-----------+ | A | Type 1 |

我有一个类似的问题,但有一些不同之处/复杂之处

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

源数据如下所示:

+----------+------------+-----------+ | 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 | +----------+------------+-----------+ +----------+------------+-----------+ |组ID |组类型|成员ID| +----------+------------+-----------+ |A |类型1 | 1| |A |类型1 | 2| |B |类型1 | 2| |B |类型1 | 3| |C |类型1 | 3| |C |类型1 | 4| |D |类型2 | 4| |D |类型2 | 5| +----------+------------+-----------+ 所需输出如下:

+----------+-----------------+ | Group ID | Linked Group ID | +----------+-----------------+ | A | B | | B | C | +----------+-----------------+ +----------+-----------------+ |组ID |链接组ID| +----------+-----------------+ |A | B| |B|C| +----------+-----------------+ A与B相连,因为它共有2个 B与C相连,因为它共有3个 C没有链接到D,它有一个共同的成员,但属于不同的类型

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

输出被用作图形的边,因此,如果输出是符合规则的图形,则可以

源数据集很大(数亿行),因此需要考虑性能


提出了一个类似的问题,但是我是Python新手,不知道如何将源数据获取到可以使用答案的位置,也不知道如何满足组类型匹配的附加要求-

df1=df.groupby(['Group Type','Member ID'])['Group ID'].apply(','.join).reset_index()
df2=df1[df1['Group ID'].str.contains(",")]

这可能无法处理循环分组的情况。

您好,欢迎继续。你的建议中的一个类似问题使用了不同的连接组件概念。根据您的要求,B不应该与E连接(不太可能回答建议),不是吗?组类型和成员ID也被分类了吗?谢谢,很多时间都在这里得到提示,但这次真的很难办!在这个例子中没有E,如果这就是你的意思,那么就没有模式了?组类型和成员ID可以在源代码处进行排序,如果这有帮助的话。我的意思是,您提到的链接中的一个解决方案应该是一个很好的例子,说明您的问题不等同于查找连接的组件(尤其是,这个:)。在其中一个答案中,可以找到组件
[A,C]
[B,D,E]
,但是
B
E
不是您想要的一对。我可以用它来获得所需的,看起来我想得太多了!非常感谢SushantYou是最受欢迎的松鼠猪,很高兴看到它的帮助。然而,如果不对熊猫使用逗号技巧,这似乎是一项相当具有挑战性的任务