2015-11-02 4 views
2

У меня есть файл .txt, в котором есть 46 строк, каждая строка обозначает узел в сети, а затем имеет множество атрибутов за ней.Добавить узлы с атрибутами из .txt-файла с несколькими разделителями networkx/pandas

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 предлагает возможность сравнить атрибуты узлов и, если они совпадают, создать взвешенный край?

+0

Скопируйте и прошлые первые несколько строк файла txt/csv pls – WoodChopper

+0

добавили вторую строчку, все они выглядят так: – Chris

+0

'Example Name; 'является единственным узлом в строке – WoodChopper

ответ

3

Вы можете добиться этого, прочитав файл с указанием разделителя как ';' так что первым элементом является ключ узла, а остальные - атрибуты. Затем разделите строку атрибутов с разделителем ',' и добавьте возвращаемый список в качестве атрибута узла. Я скопировал образец, который вы предоставили в файле 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' , 'в Blabla', '(ZH)', 'B \ xc3 \ xbcrgerorte', 'Oeschgen (AG)', 'Zivilstand', '']

Узел: Пример Название

Atrributes: [ '03.01.194' , 'Люцерн', '(ЛУ)', 'Test', 'Атрибут', 'другой атрибут',' «]

Что касается вашего вопроса, в сети networkx предлагает такие возможности и многое другое. Взгляните на учебник here.