簡體   English   中英

使用多個分隔符networkx / pandas從.txt文件中添加具有屬性的節點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM