2013-08-01 2 views
0

나는 3 개의 항목과 같은 데이터 세트를 가지고 있습니다. [1,2,3] 나는 (실제로 수직이어야 함) 3 반복으로의 제품을 찾은 다음과 같은 3 개 데이터 세트로 구분하려면 :itertools.product의 열을 행렬/배열로 분리하는 방법

[1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3] 
[1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3] 
[1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3] 

나는 파이썬에서 내가 찾는 iteration.product를 사용할 수있는 것으로 나타났습니다 같은 제품 :

data_prod=itertools.product(data,repeat=3) 

지금은 내 질문에 위의 예에서와 같이 내가 3 개 새로운 데이터 세트에 (데이터 유형이 itertools.product입니다) 결과의 각 열을 변환 할 수있는 방법인가?

답변

2

사용 zip(*..) 열을 행으로 설정합니다 :

dataset1, dataset2, dataset3 = zip(*itertools.product(data,repeat=3)) 

데모 :

>>> zip(*itertools.product(data,repeat=3)) 
[(1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3), (1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3), (1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)] 
>>> dataset1, dataset2, dataset3 = zip(*itertools.product(data,repeat=3)) 
>>> dataset1 
(1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3) 
>>> dataset2 
(1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3) 
>>> dataset3 
(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3) 
+0

감사합니다. 효과가있다. – iBM

0

또 다른 방법, 표시 목적으로, 여전히 itertools.product를 사용하여 :

import itertools 
import pandas as pd 

cols=['series1', 'series2', 'series3'] 

originDataset = [1,2,3] 

data_prod = lambda x: list(itertools.product(x, repeat=3)) 

df1 = pd.DataFrame(originDataset, columns=['OriginalDataSet']) 

df2 = pd.DataFrame(data_prod(originDataset), columns=cols) 

print df1 

print '-'*80 

print df2 

print '-'*80 

series1, series2, series3 = df2.T.values 

print series1 
print series2 
print series3 

출력 :

OriginalDataSet 
0    1 
1    2 
2    3 
-------------------------------------------------------------------------------- 
    series1 series2 series3 
0   1  1  1 
1   1  1  2 
2   1  1  3 
3   1  2  1 
4   1  2  2 
5   1  2  3 
6   1  3  1 
7   1  3  2 
8   1  3  3 
9   2  1  1 
10  2  1  2 
11  2  1  3 
12  2  2  1 
13  2  2  2 
14  2  2  3 
15  2  3  1 
16  2  3  2 
17  2  3  3 
18  3  1  1 
19  3  1  2 
20  3  1  3 
21  3  2  1 
22  3  2  2 
23  3  2  3 
24  3  3  1 
25  3  3  2 
26  3  3  3 
-------------------------------------------------------------------------------- 
[1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3] 
[1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3] 
[1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3] 

나는 동시에 사용법을 배우는 데 도움이되기를 바랍니다. Pandas