我有两个用于构造图形的csv字符串。每个都有唯一的标签。我想将每个图的标记分配给所有边缘,然后合并图并合并属性。示例:
CSV1: a,b,c,d,e,123
CSV2: a,b,c,f,e,456
构建并合并图形后,edge:edge_attributes如下所示。两张图中的公共边仅保留一个标签:
('a', 'b') : {'tag': ['456']}
('b', 'c') : {'tag': ['456']}
('c', 'd') : {'tag': ['123']}
('c', 'f') : {'tag': ['456']}
('d', 'e') : {'tag': ['123']}
('f', 'e') : {'tag': ['456']}
我不知道如何合并标记属性,以使edge:edge_attributes看起来像这样。 ('a','b')和('b','c')节点应保留两个标签:
('a', 'b') : {'tag': ['123', '456']}
('b', 'c') : {'tag': ['123', '456']}
('c', 'd') : {'tag': ['123']}
('c', 'f') : {'tag': ['456']}
('d', 'e') : {'tag': ['123']}
('f', 'e') : {'tag': ['456']}
我有10万张图,每个图有1000个节点,所以这必须是一个高效的过程。
我目前正在像这样合并它们:
merged_graph = networkx.DiGraph()
for graph in my_list:
merged_graph.add_edges_from(graph.edges(data=True))