我是一名Python初学者,我试图比较两个csv文件中的两个字段(时间戳),如果它们匹配,则将它们合并到第三个文件中。输入文件看起来像:比较和合并两个CSV文件中的字段
文件1:
name,time,operation
Cassandra,2015-10-06T15:07:22.333662984Z,INSERT
Cassandra,2015-10-06T15:07:24.334536781Z,INSERT
Cassandra,2015-10-06T15:07:27.339662984Z,READ
文件2:
name,time,host,instance,type,type_instance,value
cpu_value,2015-10-06T15:07:22.333662984Z,vm1-VirtualBox,0,cpu,user,24874
cpu_value,2015-10-06T15:07:24.334536781Z,vm1-VirtualBox,0,cpu,nice,592
cpu_value,2015-10-06T15:07:27.339662984Z,vm1-VirtualBox,0,cpu,system,2932
这是我到目前为止已经试过:
import csv
with open('f1.csv', 'rb') as f1, open ('f2.csv', 'rb') as f2:
next(f1) #skip line 1
next(f2) #skip line 1
reader1 = csv.reader(f1)
reader2 = csv.reader(f2)
for row1 in reader1:
for row2 in reader2:
if row1[1] == row2[1]:
data = [row1[0],row2[0]]
print data
然后,我得到这个错误:
['cpu_value', 'Cassandra']
Traceback (most recent call last):
File "merger.py", line 10, in <module>
if row1[1] == row2[1]:
IndexError: list index out of range
更新
预期输出:
Cassandra,2015-10-06T15:07:22.333662984Z,INSERT,cpu_value,vm1-VirtualBox,0,cpu,user,24874
Cassandra,2015-10-06T15:07:24.334536781Z,INSERT,cpu_value,vm1-VirtualBox,0,cpu,nice,592
Cassandra,2015-10-06T15:07:27.339662984Z,READ,cpu_value,vm1-VirtualBox,0,cpu,nice,592
您可以通过这个link访问这些文件。如果你有任何想法,请告诉我。谢谢。
什么是您预期的输出? – aerokite
@AerofoilKite我更新了帖子。 – arazx
是否有可能这些csv文件之一有一个看似空的行或只有没有足够的字段的行?这就是错误信息暗示的原因。如果你不知道,你应该考虑添加一个链接到这两个文件,以便其他人可以检查他们。 –