Networkx: при добавлении атрибутов путем циклического перемещения по списку узлов, IndexError: список индексов вне диапазона - PullRequest
0 голосов
/ 23 апреля 2020

Проблема с Networkx в Python:

Я загрузил свой CSV-файл в Python, используя разделитель ','. Теперь у меня есть список узлов и список ребер. Когда я пытаюсь присвоить атрибуты из файла csv (узла) пустому словарю, я получаю сообщение об ошибке:

IndexError: индекс списка вне диапазона

Герби Я добавил часть своего код.

nodereader = csv.reader(nodecsv, delimiter=(','))
nodes= [n for n in nodereader][1:]

node_names = [n[0] for n in nodes] # List 1


household_dict = {}
household_dict[node[0]]=node[2]

Почему это не работает ?? Проблема в том, что мой код не разделяет каждую строку на разные столбцы. Ниже структура файла CSV.

CSV-файл (только один столбец):

Идентификатор, Метка, Домашнее хозяйство, Производитель, Избыток

0, Klant1,2, Ja, 1
1, Klant2 , 2, Ни, 0
2, Клант3,4, Ни, 0

1 Ответ

0 голосов
/ 23 апреля 2020

Я не хотел погружаться в узлы, которые вы извлекаете из файла. Тем не менее, см. Ниже общий синтаксис для синтаксического анализа CSV. Вы можете легко настроить его под свои цели.

with open('filePath\\fileName.csv', mode='r') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print(f'Column names are {", ".join(row)}')
            line_count += 1
        print(f'\tID: {row["Id"]}, Label: {row["Label"]}, Household: {row["Household"]}, Producer: {row["Producer"]}, Surplus: {row["Surplus"]}')
        line_count += 1
    print(f'Processed {line_count} lines.')
...