如何基于简单的 Dataframe 创建网络图

How to Create a network graph based a simple Datafrme

我想知道如何根据此类数据创建边缘列表(从、到)。两列都在 pandas 数据框内,类型为字符串。

Name Co-Workers
A A,B,C,D
B A,B,C,D
C A,B,C,E
D A,B,D,E
E C,D,E

而且我还想删除 AA BB CC 等连接,....

IIUC,您可以explode您的数据并对其进行过滤:

df2 = df.copy()
df2['Co-Workers'] = df['Co-Workers'].str.split(',')
df2 = df2.explode('Co-Workers')
df2[df2['Name'].ne(df2['Co-Workers'])]

输出:

  Name Co-Workers
0    A          B
0    A          C
0    A          D
1    B          A
1    B          C
1    B          D
2    C          A
2    C          B
2    C          E
3    D          A
3    D          B
3    D          E
4    E          C
4    E          D
  • 首先将列从字符串拆分为单独值的列表。
  • 二、爆列。
  • 三、创建方向图

通过

处理数据

然后:

from matplotlib.pyplot import figure
G = nx.from_pandas_edgelist(df2, source='Name', target='Co-Workers')
figure(figsize=(10, 8))
nx_graph = nx.compose(nx.DiGraph(), G)
nx.draw_shell(nx_graph, with_labels=True)

结果图: