Я хочу дважды проверить свою логику того, как собрать это вместе в Python, поэтому примеры приветствуются.
Мне нужно сравнить 2 файла CSV (тот же формат, точно с 2 строками и 6 столбцами) и показать разницу.
Мне нужно вывести и умножить строку 2, столбцы 2-6 на определенные значения (5), суммировать их отдельно, а затем сравнить друг с другом (всего CSV2 / CSV1 всего) и представить в процентном формате.
import csv и reader кажутся подходящими, но сложная часть для меня заключалась в том, чтобы вытащить его в список, который я могу умножить на разные значения (или мне следует использовать коллекцию?), а затем сравнить их в самом кратком / эффективным способом.
Обновление кода (на основе 2-го ответа - было здорово, спасибо! Но теперь возникает ошибка при вызове целых чисел значений моей строки):
import csv
file1 = open('csv1.csv', 'rb')
csv1 = csv.DictReader(file1)
file2 = open('csv2.csv', 'rb')
csv2 = csv.DictReader(file2)
myList = csv2.fieldnames
myList.append('Difference')
outFile = open('outFilename.csv', 'wb')
outCsv = csv.DictWriter(outFile, myList)
file1Dict = dict()
file2Dict = dict()
for row in file1:
file1Dict[row['key value']]['Total1'] = {'Total1':(int(row[1]) * .75 + int(row[2]) * 2.25 + int(row[3]) * 3.5 + int(row[4]) * 5 + int(row[5]) * 25)}
for row in file2:
file2Dict[row['key value']]['Total2'] = {'Total2':(int(row[1]) * .75, int(row[2]) * 2.25, int(row[3]) * 3.5, int(row[4]) * 5, int(row[5]) * 25)}
outFile.writeheader()
for stuff in file1Dict:
file1Dict[stuff]['Difference'] = str(int(int(file1Dict[stuff]['Total2']) / int(file1Dict[stuff]['Total1'])) * 100) + '\%'
outFile.writerow(file1Dict[stuff])
print 'difference'