Как объединить атрибуты ребер в networkx? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть две строки 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']}

У меня есть 100 тыс. Графов по 1000 узлов в каждом, так что это должен быть эффективный процесс.

В настоящее время я объединяю их так:

merged_graph = networkx.DiGraph()
for graph in my_list:
    merged_graph.add_edges_from(graph.edges(data=True))
...