2017-05-05 5 views
1

n 개의 변수에 대한 주어진 범위. 나는 n = 3을 예로 들었다.팬더에서 여러 변수에 대해 모든 조합 열을 현명하게 만드는 방법은 무엇입니까?

A : [1,3] 
B: [5,10,12] 
C: [100,113] 

위의 값은 float 일 수도 있습니다.

모든 열이 입력 변수의 고유 한 조합을 나타내는 데이터 프레임을 어떻게 만들 수 있습니까?

c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 
a 1 1 1 3 3 3 1 1 1 3 3 3 
b 5 10 12 5 10 12 5 10 12 5 10 12 
c 100 100 100 100 100 100 113 113 113 113 113 113 

답변

4

것은 나중에 당신이 당신의 DataFrame에

import itertools 

A = [1, 3] 
B = [5, 10, 12] 
C = [100, 113] 

a = [A, B, C] 

print(list(itertools.product(*a))) 
# Outputs [(1, 5, 100), (1, 5, 113), (1, 10, 100), (1, 10, 113), (1, 12, 100), (1, 12, 113), (3, 5, 100), (3, 5, 113), (3, 10, 100), (3, 10, 113), (3, 12, 100), (3, 12, 113)] 

idx = ['c{}'.format(i) for i in range(1, len(data)+1)] 
data = list(itertools.product(*a)) 
df = pd.DataFrame(data, index=idx, columns=list('abc')).T 

df 

    c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 
a 1 1 1 1 1 1 3 3 3 3 3 3 
b 5 5 10 10 12 12 5 5 10 10 12 12 
c 100 113 100 113 100 113 100 113 100 113 100 113 
+0

itertools을 각 조합을 작성할 수 있습니다, 나는 목록의 모든 조합을 만들 수 있습니다 Itertools.product를 사용하는 것은 매우 강력하다. 감사! –