【发布时间】:2013-01-23 17:58:12
【问题描述】:
我想再次检查我的逻辑,了解如何在 Python 中将其组合在一起,因此非常感谢示例。
我需要比较 2 个 CSV 文件(格式完全相同,2 行 6 列)并提供差异。
我需要将第 2 行、第 2-6 列与特定值 (5) 相乘,然后分别合计,然后相互比较(CSV2 总计/CSV1 总计),并以百分比格式显示。
import csv 和 reader 似乎是要走的路,但对我来说棘手的部分是将其拉入一个列表,我可以将其与不同的值相乘(或者我应该使用一个集合?),然后在最简洁/有效的方式。
代码更新(基于第二个答案——太好了,谢谢!但现在调用我的行值整数时遇到错误):
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'
【问题讨论】:
-
欢迎来到 StackOverflow!为什么不显示到目前为止您尝试过的代码?
-
如果您能看到示例输入和您所期望的输出,也会很高兴。
-
这可能对你有帮助,help.hackshackers.com/questions/…
标签: python csv import percentage multiplication