Networkx二分图:不同集合的节点数相同

Networkx bipartite graphs: nodes of different sets with the same number

我在使用 Networkx 构建二分图时遇到了一个主要问题。

我从 2 列 csv 中获取节点,比如

CODINV2;APPLN_ID

1;3
1;4
1;5
2;3
2;6
3;6
4;12

将每一列移动到单独的列表后,存储节点的代码是

G=nx.Graph()
G.add_nodes_from(codinv, bipartite=0)
G.add_nodes_from(app_id, bipartite=1)

然后我添加边缘(基于 csv 行):

for index,row in appl.iterrows():
    G.add_edge(row['APPLN_ID'], row['CODINV2'])

现在确实创建了链接,但是如果我再次查看节点属性,现在很多都被错误地认为是

bipartite=1

基本上,如果属于不同集合的两个节点具有相同的编号,似乎会出现很多混乱,尤其是在假设的单模投影方面。

这样做的原因是图形按名称存储节点。

如果它按名称 3 输入一个节点并认为 bipartite=1,然后稍后再次添加 3,它会将其解释为同一节点。如果这次你告诉它bipartite=0,它会覆盖旧条目。所以现在,节点 3bipartite=0.

如果要存储两个不同的节点3,那么它们必须有不同的名称。您可以尝试将其用作字符串:'3a''3b'。或任何其他名称,但 33 将不起作用。