从具有多个定界符的 .txt 文件中添加具有属性的节点 networkx/pandas

Add Nodes with attributes from a .txt file with multiple delimiters networkx/pandas

我有一个 .txt 文件,它有 46 行,每行代表网络中的一个节点,然后在它后面有很多属性。

Example Name; 03.01.194, Luzern, (LU), Test, Attribute, Other Attribute, 
Kasdasd Alex; 22.12.1957, in Blabla, (ZH), Bürgerorte, Oeschgen (AG),  Zivilstand, 

我不确定如何让 networkx 将其视为节点列表,我考虑过一些可能可行的方法,但目前还不行

import pandas as pd
import networkx as nx
nodes = pd.read_csv('final.csv', header=None)
nodes

上面代码的问题是属性用逗号分隔,而不是节点。

另一次尝试,我想打开文件,逐行添加节点,但卡在 G.add_node() 命令

G = nx.Graph()
with open('final.txt') as infile:
    for line in infile:
        G.add_node()

是这两种方法中的一种还是我应该尝试不同的方法?

另外,为了进一步分析,networkx 是否提供了比较节点属性的可能性,如果它们匹配,则创建加权边?

您可以通过读取将分隔符指定为“;”的文件来实现此目的所以第一个元素是节点键,其余是属性。然后用分隔符 ',' 拆分属性字符串,并将返回的列表添加为节点属性。我复制了您在 'test.txt' 文件中提供的示例并执行了以下代码。

G = nx.DiGraph()

csv_F = csv.reader(open("test.txt"),delimiter=';')
for row in csv_F:
    attributes=row[1].split(',')
    G.add_node(row[0], attr = attributes)

然后我打印节点和它们的属性如下:

for n in G.nodes():
    print 'Node: '  + str(n)
    print 'Atrributes' + str(G.node[n]['attr'])

结果:

Node: Kasdasd Alex

Atrributes: [' 22.12.1957', ' in Blabla', ' (ZH)', ' B\xc3\xbcrgerorte', ' Oeschgen (AG)', ' Zivilstand', '']

Node: Example Name

Atrributes: [' 03.01.194', ' Luzern', ' (LU)', ' Test', ' Attribute', ' Other Attribute', ' ']

至于你最后的问题,networkx提供了这样的能力等等。看看教程 here.