2017-02-23 76 views
1

我有两个.csv文件与单个行,但有很多列。我希望比较列中的数据(前3列除外)并输出新的.csv,其中包含文件的减法,计算方法为baseline - testCSV文件值比较产生一个新的CSV文件与结果

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 

我能够带来up .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() 
+0

请发表你有什么到目前为止已经试过 - 代码和错误它给了 - 所以我们可以尽力帮助! – nigel222

+0

您可以使用熊猫读取csv文件..然后,您可以创建两个数据框(df1 - >带有基线的test.csv/df2 - >),您可以创建df3 = df1 - df2 – Ika8

+0

您可以将代码展示给您'正在使用,特别是你的困难在哪里?您使用哪些工具加载'.csv'?如果有人提出了不同的工具,这是可以接受的吗? –

回答

0

比方说,您已经阅读这些文件为两个列表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:]` 
0

您可以使用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) 
+0

会给大熊猫一个尝试。打算下载Anaconda3-4,因为我得到一个**“No module named'pandas'”**错误。 – Anon

+0

in cmd'conda install -c anaconda pandas = 0.19.2' – zipa

+0

用上面的代码我得到这个错误** AttributeError:'function'对象没有属性'columns'** – Anon

相关问题