我有2个csv文件,如:
格式
before.csv
after.csv
我基本上需要每个REPORT_NUM比较REPORT_COUNT,然后在REPORT_COUNT之前输出第三个csv与REPORT_COUNT之后,当出现阈值交叉时( 之后超过10%时)不同于之前)。 EXEC只是一个执行运行。
所以result.csv可能会显示:
我正在寻找以下灵感:
Comparing values between 2 CSV files and writing to a 3rd CSV file
Python: Comparing two CSV files and searching for similar items
我继续搜索,但感谢任何反馈。
提前谢谢!
P.S。我假设Python是最好的,我不介意什么语言,但我有基本的python理解。我开始用bash写这个并使用" diff"和" sed" ..所以我可能会走这条路..
答案 0 :(得分:1)
根据您提供的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: writing csv files进行更改。如果你有非整数,你可能想要将最后一行中的int()更改为float()以保持小数。