[英]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'])
結果:
節點:Kasdasd Alex
特例:['22.12.1957','in Blabla','(ZH)','B \\ xc3 \\ xbcrgerorte','Oeschgen(AG)','Zivilstand','']
節點:示例名稱
屬性:['03.01.194','Luzern','(LU)','Test','Attribute','Other Attribute','']
最后,關於您的問題,networkx提供了此類功能以及更多功能。 在這里看看教程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.