如何从认识联想中创建clusters/groups?

How to create clusters/groups from knowing associations?

我有一个包含 2 列的数据框:[ID, ASSOCIATED_ID] 对于每个 ID,我都有数据框中其他关联 ID 的列表。 这是它的综合版本:

ID            ASSOCIATED_ID
1             [2,3]
2             [1,4]
3             [1]
4             [2]
5             []

如果我想创建相互关联的 ID 集群(组)(不需要它们有直接关联,但即使有任何传递关联)。我怎样才能以编程方式做到这一点?

IIUC,你可以使用networkx和connect_components:

df_e = df.explode('ASSOCIATED_ID')

G = nx.from_pandas_edgelist(df_e, 'ID','ASSOCIATED_ID')

[i for i in nx.connected_components(G)]

输出:

[{1, 2, 3, 4}, {nan, 5}]