我想比较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)
答案 0 :(得分:0)
Python具有a module called 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
可以为您提供许多示例。
编辑:我阅读了您的评论,并看到了您更新的代码。据我所知,让我们看一下嵌套循环的作用:
这就是您想要的吗?还是只是尝试逐行比较它们并写出差异?
编辑#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()
。