Присвоение номера списку подключенных компонентов в Networkx - PullRequest
1 голос
/ 26 мая 2020

Я создал график с помощью networkx:

G = nx.Graph()
G.add_edges_from(edges)
list(nx.connected_components(G))

Результат выглядит следующим образом:

{'John Doe' , 'James Doe'},
{'Jack Fisher', 'Adam Scott', 'Jane Matters'}

Я хочу численно сгруппировать все связанные компоненты вместе. Итак, Джон Доу и Джеймс Доу входят в группу 1, а следующий список является частью группы 2.

Я не знаю, как это сделать.

1 Ответ

1 голос
/ 26 мая 2020

Вы можете довольно легко построить словарь, перечисляя набор связанных компонентов с помощью enumerate и создавая dict из кортежей:

s = {'John Doe' , 'James Doe'}, {'Jack Fisher', 'Adam Scott', 'Jane Matters'}

dict(enumerate(s))
# {0: {'James Doe', 'John Doe'},
#  1: {'Adam Scott', 'Jack Fisher', 'Jane Matters'}}

Для pd.DataFrame вы можете использовать понимание словаря следующим образом:

d = {name:k for k,comp in enumerate(s) for name in comp}
(pd.DataFrame.from_dict(d, orient='index', columns=['component'])
   .rename_axis('name')
   .reset_index())

           name  component
0     James Doe          0
1      John Doe          0
2  Jane Matters          1
3    Adam Scott          1
4   Jack Fisher          1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...