0

我想知道如何根据这种类型的数据创建一个边缘列表(从,到)。两列都在 pandas 数据框中,类型为字符串。

姓名 合作伙伴
一个 A B C D
A B C D
C A,B,C,E
D A,B,D,E
C,D,E

而且我还想删除像 AA BB CC 之类的连接,....

4

2 回答 2

2

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
于 2021-09-18T10:24:27.383 回答
1
  • 首先将列从字符串拆分为单独的值列表。
  • 二是爆列。
  • 第三,创建有向图。

通过mozway代码处理数据

接着:

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)

结果图:

在此处输入图像描述

于 2021-09-18T10:50:31.297 回答