Python 从带有多个分隔符的.txt文件添加具有属性的节点networkx/pandas
我有一个Python 从带有多个分隔符的.txt文件添加具有属性的节点networkx/pandas,python,nodes,networkx,edges,Python,Nodes,Networkx,Edges,我有一个.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将其视为一个节点列表的,一些我曾想过的事情,可能会奏效,但目前还没有
.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'])
结果:
节点:Kasdasd Alex
报道:['22.12.1957','in Blabla','(ZH)','B\xc3\xbcrogerote','Oeschgen(AG)','Zivilstand',''
节点:示例名称
a属性:['03.01.194','Luzern','(LU)','Test','Attribute','Other Attribute','
至于你最后的问题,networkx提供了这样的功能和更多功能。看看教程。复制并通过txt/csv文件的前几行添加第二行,它们看起来都像这个
示例名称代码>是线中唯一一个作为点示例名称的节点
应该是节点,其后面的其余部分应该是节点的属性