У меня есть кадр данных, как показано ниже.
import pandas as pd
import networkx as nx
df = pd.DataFrame({'source': ('a','a','a', 'b', 'c', 'd'),'target': ('b','b','c', 'a', 'd', 'a'), 'weight': (1,2,3,4,5,6) })
Я хочу преобразовать его в направленный мультиграф графа networkx.Я делаю
G=nx.from_pandas_dataframe(df, 'source', 'target', ['weight'])
и получаю
G.edges(data = True)
[('d', 'a', {'weight': 6}),
('d', 'c', {'weight': 5}),
('c', 'a', {'weight': 3}),
('a', 'b', {'weight': 4})]
G.is_directed(), G.is_multigraph()
(False, False)
Но я хочу получить
[('d', 'a', {'weight': 6}),
('c', 'd', {'weight': 5}),
('a', 'c', {'weight': 3}),
('b', 'a', {'weight': 4}),
('a', 'b', {'weight': 2}),
('a', 'b', {'weight': 4})]
Я не нашел параметров для направленного & мультиграфа в этом руководство .Я могу сохранить df
как текст и использовать nx.read_edgelist()
, но это не удобно