2012-07-02 2 views
0

Итак, я импортирую CSV, а затем хочу объединить все итерированные значения в row[0] с итерированными значениями в row[1].Сочетание всех значений двух разных столбцов в CSV

csvfile = csv.reader(open(filename, 'rb'), delimiter=',') 

for row in csvfile: 
    row[0] + row[1] 

Как это, за исключением того, я хочу все значения row[0] объединить со всеми значениями row[1], даже если они не на той же строке.

Так позволяет сказать, что у меня есть две колонки, одна колонка:

asparagus 
beets 
corn 
cucumbers 
tomatoes 

, а другой:

pineapple 
orange 
apple 
raspberry 
blueberry 

Я хочу, чтобы спаржа в сочетании с ALL из списка 2., то есть:

asparagus pineapple 
asparagus orange 
asparagus apple 
asparagus raspberry 
asparagus blueberry 

А потом на свеклу ананаса и т.д.

ответ

2
In [1]: import csv 

In [2]: from itertools import product 

In [3]: csvfile = csv.reader(open('filename', 'rb'), delimiter=',') 

In [4]: list(product(*zip(*list(csvfile)))) 
Out[4]: 
[('asparagus', 'pineapple'), 
('asparagus', 'orange'), 
('asparagus', 'apple'), 
('asparagus', 'raspberry'), 
('asparagus', 'blueberry'), 
('beets', 'pineapple'), 
('beets', 'orange'), 
('beets', 'apple'), 
('beets', 'raspberry'), 
('beets', 'blueberry'), 
('corn', 'pineapple'), 
('corn', 'orange'), 
('corn', 'apple'), 
('corn', 'raspberry'), 
('corn', 'blueberry'), 
('cucumbers', 'pineapple'), 
('cucumbers', 'orange'), 
('cucumbers', 'apple'), 
('cucumbers', 'raspberry'), 
('cucumbers', 'blueberry'), 
('tomatoes', 'pineapple'), 
('tomatoes', 'orange'), 
('tomatoes', 'apple'), 
('tomatoes', 'raspberry'), 
('tomatoes', 'blueberry')] 
+0

Да, но мой формат не находится в строке = [["blah", "blah", "blah"], ["two", "two," two "]] –

+0

@AndrewAlexander Боюсь, что я не достаточно понять проблему: нужно ли форматировать каждую пару в виде строки? –

+0

Ну, мне все равно нужно перебирать весь список, не так ли? –

0
csvfile = csv.reader(open(filename, 'rb'), delimiter=',') 

combinations = [] 

for rowa in csvfile: 
    for rowb in csvfile: 
     combinations.append(rowa[0] + ' ' + rowb[1]) 
+0

Это будет перебирать строку 'rowb'' len (rowa) * len (rowb) 'раз. – Blender

+0

@ Вывести размер результата O (n^2), как время выполнения меньше этого? – xvatar

+0

Извините, я неправильно понял вопрос. Я думал, что OP хочет объединить две строки в одну, а не делать все возможное сочетание. – Blender

Смежные вопросы