2个CSV文件.在迁移前后执行.想要将计数与阈值进行比较



我有两个csv文件,比如:

格式

  • REPORT_NUM、EXEC、REPORT_NAME、REPORT_COUNT

在.csv之前

  • 1,1,"报告1",45
  • 2,1,"报告2",456
  • 3,1,"报告3",11
  • 4,1,"报告4",0

在.csv之后

  • 1,1,"报告1",47
  • 2,1,"报告2",456556
  • 3,1,"报告3",0
  • 4,1,"报告4",212

我基本上需要每个REPORT_NUM比较REPORT_COUNT,然后在REPORT_COOUNT之前、REPORT_COUNCT之后输出第三个csv(当之后的之前的>相差超过10%时)。EXEC只是一个执行运行。

因此,result.csv可能显示:

  • 2.1,"报告2",456456556
  • 3,1,"报告3",11,0
  • 4,1,"报告4",0212

我正在寻找以下灵感:

比较2个CSV文件之间的值并写入第三个CSV文件

Python:比较两个CSV文件并搜索类似项目

我继续搜索,但任何反馈都很感激。

提前谢谢!

附言:我认为Python是最好的,我不介意用什么语言,但我对Python有基本的理解。我开始在bash中写这篇文章,并使用"diff"one_answers"sed"。。所以我可以走那条路。。

基于您给出的2个链接:

import csv
with open('before.csv', 'r') as before:
before_indices = dict((i[2], i[3]) for i in csv.reader(before))

with open('after.csv', 'r') as reportAfter:
with open('results.csv', 'w') as results:
reader = csv.reader(reportAfter)
writer = csv.writer(results, quoting=csv.QUOTE_NONNUMERIC)
for row in reader:
value = before_indices.get(row[2])
if float(row[3]) > 1.1*float(value) or float(row[3]) < 0.9*float(value):
writer.writerow([int(row[0]),int(row[1]),row[2],int(value),int(row[3])])

在给定linux上的示例输入的情况下,这将生成所需的输出。在windows上,您需要根据Python3进行更改:编写csv文件。如果您有非整数,您可能需要将最后一行的int()更改为float()以保留小数。

相关内容

  • 没有找到相关文章

最新更新