簡體   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