我想比较 2 个 csv 文件并将结果存储在一个新的 csv 文件中。
我有 2 个具有相同标题的 csv(旧.csv和新.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)
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
应该会给你一些例子。
编辑:我阅读了您的评论并看到了您更新的代码。据我所知,让我们看看你的嵌套循环是做什么的:
- 获取旧 CSV 数据的第一行
- 获取新 CSV 数据的第一行
- 比较"帐户"的值。 如果它们相同,则打印它们的差异(如果两个数字相同,则应为零,对吧?
- 对旧的第#1行和新的第 #2 行执行相同的操作。
- 对旧的第#1行和新的第 #3 行执行相同的操作。
- 继续,直到比较旧行的 #1 和新行的最后一行。 用旧的#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()
。