2015-04-07 107 views
0

我有一个包含2列(标题是值,图像)的csv文件。值列表包含按升序(0,25,30 ...)的值,并且图像列表包含图像路径(例如X.jpg)。共线81,包括标题(即,有80个值和80张图片)选择cvs文件中的行并将它们写入另一个csv文件

screenshot of a couple of columns in a spreadsheet

我要划分这个列表4的方式是什么。基本上这个想法是有一对图像的传播。

在第一组中,我将每两个靠近行的图像部分(2 + 3,4 + 5 ....)写入一个新的csv文件中。我将每个图像写入不同的列。下面的代码:

import csv 

f = open('random_sorted.csv') 
csv_f = csv.reader(f) 

i = 0 
prev = "" 

#open csv file for writing 
with open('first_group.csv', 'wb') as test_file: 
    csv_writer = csv.writer(test_file) 
    csv_writer.writerow(["image1"] + ["image2"]) 
    for row in csv_f: 
     if i%2 == 0 and i!=0: 
      #print prev + "," + row[1] 
      csv_writer.writerow([prev] + [row[1]]) 
     else: 
      prev = row[1] 
     i = i+1 

下面是此输出:

enter image description here

我想保持这个概念,其余3组相似(写入到一个新的CSV文件成对的图像,并具有两列),但只是增加点差。即,每5行(即2 + 7等),每7(即2 + 9等)和每9行一起配对。希望能够得到关于如何执行它的一些指示。我很幸运第一组(刚刚了解CodeAcademy课程中的余数/分隔符选项,但无法想到其他组的想法)

+0

究竟有什么区别为每个如果第一个区别是1,那么似乎不会有任何智慧h仅差4个组就差多达5,7或9。显示所需的输出将非常有帮助。 – martineau

+0

编辑并添加了输出。这些值在0-300范围内跳变25,但是它们的出现次数有所不同。基本上,中间数字(125,150,175)比其他数字更多。这就是为什么传播会有所作为 – HBS

回答

1

首先收集列表中csv文件中的所有行:

with open('random_sorted.csv') as csvfile: 
     csv_reader = csv.reader(csvfile, delimiter=';') 
     headers = next(csv_reader) 
     rows = [row for row in csv_reader] 

然后设置您所需的步长(5,7或9),并确定其指数的基础上,各行中的行名单:你想

with open('first_group.csv', 'wb') as test_file: 
    csv_writer = csv.writer(test_file) 
    csv_writer.writerow(["image1"] + ["image2"]) 

    step_size = 7 # set step size here 
    seen = set() # here we remember images we've already seen 
    for x in range(0, len(rows)-step_size): 
     img1 = rows[x][1] 
     img2 = rows[x+step_size][1] 
     if not (img1 in seen or img2 in seen): 
      csv_writer.writerow([img1, img2]) 
      seen.add(img1) 
      seen.add(img2) 
+0

这看起来不错!对于第一行,你的意思是my_reader = csv_reader? – HBS

+0

你说得对,那是一个错字。我纠正了它。 – yvespeirsman

+0

嗨@yvesperisman - 所以在文件“random_sorted”中有80个值(不包括标题)。我使用的第一个代码生成了40对列表,而您的代码为列表中的每个项目添加了“step_size”,从而生成80对。目的是让每个项目在新列表中只出现一次。我怎样才能解决这个问题? – HBS

相关问题