我想知道如何根据这种类型的数据创建一个边缘列表(从,到)。两列都在 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 之类的连接,....
我想知道如何根据这种类型的数据创建一个边缘列表(从,到)。两列都在 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 之类的连接,....
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)
结果图: