У меня есть список краев в фрейме данных pandas, который выглядит так:
topic neighbor
0 K Kl
1 K Pr
2 Kl TS
3 Pr Kl
4 Pr Pr
Когда я превращаю это в график (используя networkx как nx) с помощью G = nx.from_pandas_edgelist(df), это дает мне KeyError: 'source'.
Это работает, когда я указываю источник и цель G = nx.from_pandas_edgelist(df, "topic", "neighbor"), но это неориентированный график, поэтому мне не нужны источник и цель.
Это то, как это должно быть сделано? Повлияет ли указание источника и цели на последующие расчеты Degree_centrality?
Да, для создания ненаправленной сети из фрейма данных необходимо указать источник и цель.
Не обязательно, но чтобы граф был неориентированным, можно указать create_using kwarg:
from networkx import Graph, from_pandas_edgelist
df = ...
# note that Graph is the default setting, so specifying
# create_using=Graph is optional
G = from_pandas_edgelist(df, "topic", "neighbor", create_using=Graph)
print(G.is_directed())
# False
Попробуй это:
import pandas as pd
import networkx as nx
df = pd.read_clipboard()
print(df)
Вывод:
topic neighbor
0 K Kl
1 K Pr
2 Kl TS
3 Pr Kl
4 Pr Pr
Используйте параметры source и target:
G = nx.from_pandas_edgelist(df, source='topic', target='neighbor')
nx.draw_networkx(G)
Вывод: