繁体   English   中英

CSV文件值比较,生成带有结果的新CSV文件

[英]CSV file value comparison producing a new CSV file with the results

我有两个.csv文件,只有一行但有很多列。 我希望比较列中的数据(前3列除外)并输出一个新的.csv其中包含文件的减法,计算为baseline - test

test1.csv

20170223, 433000000, 8k, -50, -50, -10, -50, -50

baseline.csv

20170223, 433000000, 8k, -50, -50, -50, -50, -50

生成的.csv文件应该是这样的:

20170223, 433000000, 8k,   0,   0, -40,  -0,  -0

我能够调出.csv文件但是列位置和计算证明是困难的。

这是我到目前为止:

import csv
with open('test001.csv', 'r') as f:
reader = csv.reader(f, delimiter = ',')
first_list = list(reader)
f.close()


with open('test002.csv', 'r') as f:
reader = csv.reader(f)
second_list = list(reader)
f.close()

result_list = list()
list_a = list()
list_b = list()

for row in first_list:
    for x in range(0, 6):
    result_list.append(row[x])

for x in range(6, len(row)-1):
    list_a.append(row[x])

for row in second_list:
 for x in range(6, len(row)-1):
    print(row[x])

    list_b.append(row[x])

for x in range(0, len(list_a)-1):    
 a = float(list_a[x])
 b = float(list_b[x])
 c = a-b
result_list.append(c)

myfile = open('difference.csv', 'w')
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)

wr.writerow(result_list)

myfile.close()

比方说,您已经阅读这些文件为两个列表onetwo

然后你可以使用zip按元素逐个元素地比较这些列表,如下所示:

>>> one = [1, 2, 3]
>>> two = [4, 5, 6]
>>> for o, t in zip(one, two):
...     print(o, t)
... 
(1, 4)
(2, 5)
(3, 6)
>>>

而不是print工具你自己的逻辑。 从第4列开始使用

`zip(one, two)[3:]`

你可以像这样使用pandas

import pandas as pd
df1 = pd.read_csv('test1.csv', header=None)
df2 = pd.read_csv('baseline.csv', header=None)

diff = df1.copy()
diff[diff.columns[3:]] -= df2[df2.columns[3:]]
diff.to_csv('difference.csv', index=False, header=None)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM