У меня есть Networkx graph
называется G
создан ниже:Сделать NetworkX узел атрибутов в столбцах Панды Dataframe
import networkx as nx
G = nx.Graph()
G.add_node(1,job= 'teacher', boss = 'dee')
G.add_node(2,job= 'teacher', boss = 'foo')
G.add_node(3,job= 'admin', boss = 'dee')
G.add_node(4,job= 'admin', boss = 'lopez')
Я хотел бы сохранить node
номер вместе с attributes
, job
и boss
в отдельных столбцах pandas
dataframe
.
Я попытался сделать это с помощью кода ниже, но он производит dataframe
с 2-мя колоннами, 1 с node
номером и один со всеми attributes
:
graph = G.nodes(data = True)
import pandas as pd
df = pd.DataFrame(graph)
df
Out[19]:
0 1
0 1 {u'job': u'teacher', u'boss': u'dee'}
1 2 {u'job': u'teacher', u'boss': u'foo'}
2 3 {u'job': u'admin', u'boss': u'dee'}
3 4 {u'job': u'admin', u'boss': u'lopez'}
Примечание: Я признаю, что NetworkX
имеет to_pandas_dataframe
функция, но она не дает dataframe
с выходом, который я ищу.
Благодарим за решение. Единственная часть решения, которое я не понимаю, это 'x [0] для x в графе'. Я понимаю, что 'graph' является' list', но что происходит в 'x [0]' 'x' в' graph'? – BeeGee
У вас есть список кортежей, первый элемент в кортеже - это значение узла, поэтому 'x [0]' второй элемент - это dict 'x [1]' – EdChum
Ошибка. Это должно быть 'def func (graph):'. – MERose