比较具有相同标头的 2 个 csv 文件,并通过一些计算输出第三个 csv



我想比较 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应该会给你一些例子。

编辑:我阅读了您的评论并看到了您更新的代码。据我所知,让我们看看你的嵌套循环是做什么的:

  1. 获取旧 CSV 数据的第一行
  2. 获取新 CSV 数据的第一行
  3. 比较"帐户"的值。 如果它们相同,则打印它们的差异(如果两个数字相同,则应为零,对吧?
  4. 对旧的第#1行和新的第 #2 行执行相同的操作。
  5. 对旧的第#1行和新的第 #3 行执行相同的操作。
  6. 继续,直到比较旧行的 #1 和新行的最后一行。
  7. 用旧的#2行和新的#1行重复上述所有操作,然后是旧的#2行和新的#2行
  8. ,旧的#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()

相关内容

  • 没有找到相关文章

最新更新