gpt4 book ai didi

python - pandas DF 中的组连接图

转载 作者:太空狗 更新时间:2023-10-30 02:52:20 25 4
gpt4 key购买 nike

我有一个 pandas DF,其中每一列代表一个节点,两列代表一条边,如下所示:

 import pandas as pd
df = pd.DataFrame({'node1': ['2', '4','17', '17', '205', '208'],
'node2': ['4', '13', '25', '38', '208', '300']})

所有节点都是无向的,即你可以从一个节点到另一个节点 undirected_graph

我想将它们分组到所有连接的组中 (Connectivity) ,如下:

df = pd.DataFrame({'node1': ['2', '4','17', '17', '205', '208'],
'node2': ['4', '13', '25', '38', '208', '300']
,'desired_group': ['1', '1', '2', '2', '3', '3']})

例如,前两行之所以被分组,是因为它有可能从节点 2 到达节点 13(通过 4)。

我设法找到的最接近的问题是这个: pandas - reshape dataframe to edge list according to column values但据我了解,这是一个不同的问题。

在此先感谢任何帮助。

最佳答案

使用 networkx connected_components

import networkx as nx

G=nx.from_pandas_edgelist(df, 'node1', 'node2')

l=list(nx.connected_components(G))

L=[dict.fromkeys(y,x) for x, y in enumerate(l)]

d={k: v for d in L for k, v in d.items()}

#df['New']=df.node1.map(d)
df.node1.map(d)
0 0
1 0
2 1
3 1
4 2
5 2
Name: node1, dtype: int64

关于python - pandas DF 中的组连接图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53573865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com