Я пытаюсь объединить данные из нескольких файлов CSV в один файл CSV. У меня есть несколько файлов с похожей информацией. Я хочу добавить информацию, которой у меня нет, к одному CSV-файлу, сопоставив аналогичные данные ячейки и добавив отсутствующую информацию в соответствующую строку.
Это изображение файла CSV, к которому я хочу добавить информацию:
таблица, которую я хочу добавить к
Это изображение файла CSV, который я хочу проанализировать для получения информации, а затем добавить недостающую информацию в объединенный файл CSV: таблица. Я хочу получить информацию из
Вот как я хочу, чтобы мой CSV-файл выглядел в конце: желаемый результат
Я просто скопировал и вставил сюда, чтобы продемонстрировать свою цель, однако у меня есть тонна данных, которые я хотел бы добавить, сверяя их с моей исходной таблицей.
Моя стратегия до сих пор заключалась в использовании модуля CSV и создании вложенного цикла for, который сравнивается с двумя строками. Прямо сейчас мой код только пытается увидеть, есть ли совпадение между двумя таблицами, не пытаясь добавить что-либо. Это также оказывается трудным.
Мой вывод пока выглядит так: токовый выход
( обратите внимание, что на этом изображении я пытался добавить информацию суперинтенданта, поэтому в выводе вместо имени указывается имя )
Мой код повторяется больше, чем я хотел. Я надеялся, что он просто сравнит значения словаря, к которым я обращался.
#Python 3.6.4
import csv
import codecs
count = 0
original_csv = codecs.open("Texas School Districts.csv", 'r', encoding='utf-8', errors='ignore')
fieldnames1 = ['NCES LEA ID', 'State ID', 'District Name']
reader1 = csv.DictReader(original, fieldnames=fieldnames1)
additional_info = codecs.open("new_information.csv", 'r', encoding='utf-8', errors='ignore')
fieldnames2 = ['Name', 'District', 'Type', 'Description']
reader2 = csv.DictReader(additional_info, fieldnames=fieldnames2)
for row1 in reader1:
for row2 in reader2:
if row1['District Name'] == row2['Name']:
print(row1['District Name'], ":", row2['Name'])
else:
pass
count += 1
original.seek(count)
append.seek(0)
Что бы вы, ребята, порекомендовали мне сделать, чтобы выполнить задачу объединения новых данных с существующими значениями? Я на правильном пути или ушел далеко? Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы, или я могу предоставить дополнительную информацию. Надеюсь, у меня был какой-то смысл. Спасибо всем.