如何在操作图形后获得新的边列表

How to get new edgelists after manipulating graphs

有什么方法可以使用来自网络的数据创建数据框吗?

例如,如果我从边列表构建一个图

G = nx.from_pandas_edgelist(df, 'Col1', 'Col2')

然后我对网络进行了一些操作(例如,删除节点或计算所有三角形), 我画了它

G1 = nx.triangles(G)
nx.draw(G1, with_labels=True)

是否可以提取我正在绘制的新数据?怎么样?

尝试G.subgraph(list_of_node_indices).copy()。在 nx.triangles 的情况下,它将 return 一个以节点名称为键的字典。您可以做的是提取具有零值的键(假设您要过滤包含至少一个三角形的所有节点)。

例子

G = nx.Graph()
G.add_edge(1,2)
G.add_edge(2,3)
G.add_edge(3,4)
G.add_edge(4,2)
G.add_edge(4,1)
G.add_edge(5,1)
G.add_edge(6,1)
G.add_edge(6,7)
G.add_edge(7,8)
G1 = G.subgraph([ i[0] for i in nx.triangles(G).items() if not i[1]]).copy()
nx.draw(G)

print(nx.triangles(G))

{1: 1, 2: 2, 3: 1, 4: 2, 5: 0, 6: 0, 7: 0, 8: 0}
#only node 6,7,8 is included
print(nx.to_pandas_edgelist(G1))

   source  target
0       6       7
1       7       8