Сравните 2 CSV-файла с тем же заголовком и выведите третий CSV-файл с некоторыми расчетами - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу сравнить 2 csv-файла и сохранить результаты в новом csv-файле.

У меня есть 2 csv (old.csv и new.csv) с одинаковыми заголовками.

Как я могу сравнить значения каждого и сделать расчеты на основе этих?

with open('new.csv') as new_csv, open('old.csv') as old_csv:
    reader_old = csv.DictReader(old_csv)
    reader_new = csv.DictReader(new_csv)
    for row_o in reader_old:
        for row_n in reader_new:

            if row_n['Account'] == row_o['Account']:
                amt_diff = float(row_n['Number']) - float(row_o['Number'])
                print(amt_diff)

1 Ответ

0 голосов
/ 20 декабря 2018

Python имеет модуль с именем csv, который позволит вам выполнять все виды чтения и записи файлов csv, без необходимости выполнять утомительную задачу - писать строки вручную, чтобы брать строки, разбивать ихвверх по запятым и т. д. Например, вы можете использовать csv.DictReader() для чтения строк в словаре, где ключи совпадают с именами столбцов:

import csv
with open('new.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        ranking = row['Ranking']
        percentage = row['Percentage']
        print("The percentage in this row is", percentage)

После извлечения того, что вам нужно, и выполнениявычисления, вы можете использовать csv.DictWriter для записи данных в ваш новый, третий CSV-файл.Поиск в сети по python csv module должен дать вам несколько примеров.

РЕДАКТИРОВАТЬ : я прочитал ваш комментарий и увидел ваш обновленный код.Давайте посмотрим, что делает ваш вложенный цикл, насколько я могу сказать:

  1. Возьмите первую строку старых данных CSV
  2. Возьмите первую строку новых данных CSV
  3. Сравните их значения для "Аккаунта".Если они одинаковы, выведите их разницу (которая должна быть равна нулю, если два числа одинаковы, верно?)
  4. Сделайте то же самое со строкой # 1 старого истрока № 2 нового.
  5. Сделайте то же самое со строкой # 1 старого и строкой № 3 нового.
  6. Продолжайте, пока не сравните строку № 1старой и последней строки новой.
  7. Повторите все вышеперечисленное со строкой # 2 старой и строкой № 1 новой, затем строкой № 2 старойи строка № 2 нового, строка № 2 старого и строка № 3 нового и т. д.

Это то, что вы хотите?Или вы просто пытаетесь сравнить их построчно и записать различия?

РЕДАКТИРОВАТЬ # 2:

Я не знаю, будет ли это иметь значение, но попробуйте вместо этого:

reader_old = csv.DictReader(open("old.csv"))
reader_new = csv.DictReader(open("new.csv"))
for row_o in reader_old:
    for row_n in reader_new:
        amt_diff = float(row_n['Number']) - float(row_o['Number'])
        print(amt_diff)

Если вы хотите записать это в новый файл, а не просто распечатать результаты, см. csv.DictWriter().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...