如何通过已知的关联创建群集/组?

时间:2019-12-14 02:52:23

标签: python python-3.x pandas algorithm cluster-analysis

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

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

如果我想创建彼此关联的ID的群集(组)(不必具有直接关联,即使有任何传递关联也是如此)。我该如何以编程方式做到这一点?

1 个答案:

答案 0 :(得分:0)

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}]