прочитать взвешенный список узлов смежности с более чем одним целевым узлом из файла CSV в Python - PullRequest
0 голосов
/ 24 июня 2018

У меня есть список смежности в CSV-файле, который выглядит так:

'a','b','0.5','c','0.34','e','0.25'\n

'b','c','0.78','d','0.3','e','0.25'\n

и т.д.

Первый «столбец» представляет начальный узел, а после этого следующие «столбцы» представляют веса соседних узлов и их ребра. Файл содержит почти 17 000 строк, а его строка содержит 341 элемент.

У меня вопрос, как я могу представить прежние данные как неориентированный граф в Python?

Я уже пробовал read_adjlist из NetworkX, но это не для взвешенных ребер.

1 Ответ

0 голосов
/ 24 июня 2018

Пока не будет найдено лучшее решение, вы можете преобразовать свой CSV в кадр данных Pandas и преобразовать этот кадр данных в список границ.Тогда у networkx есть метод: from_pandas_edgelist ()

import pandas as pd
import networkx as nx

df = pd.read_csv('adj.csv', header=None)
adj_df = df[[0,1,2]]
for i in range(3, df.shape[1], 2):
    df.drop(labels =[1, 2], inplace=True, axis=1)
    df.rename(columns={i:1, i+1:2}, inplace=True)
    adj_df = adj_df.append(df[[0,1,2]])


adj_df.rename(columns={2:'weight'}, inplace=True)
G=nx.from_pandas_edgelist(adj_df, 0, 1, ['weight'])
...