2014-11-18 4 views
0

시리즈 또는 DataFrame 순열을 계산하고 포인트 튜플을 포함하는 단일 컬럼 : 내가하고 싶은 무엇팬더 : 나는 이름으로 인덱스 행의 dataframe을 가지고

import pandas as pd 
d = {'coords': {'a': (1, 2), 'b': (3, 4), 'c': (5, 6), 'd': (7, 8)}} 
df = pd.dataframe(d) 

은 동일한 데이터를 검색하다 방법 나는 2의 튜플 길이로, 포인트 데이터 튜플에 itertools.permutations를 실행하는 것처럼 :

from itertools import permutations 
list(permutations([(1, 2), (3, 4), (5, 6), (7, 8)], 2)) 

[((1, 2), (3, 4)), 
((1, 2), (5, 6)), 
((1, 2), (7, 8)), 
((3, 4), (1, 2)), 
((3, 4), (5, 6)), 
((3, 4), (7, 8)), 
((5, 6), (1, 2)), 
((5, 6), (3, 4)), 
((5, 6), (7, 8)), 
((7, 8), (1, 2)), 
((7, 8), (3, 4)), 
((7, 8), (5, 6))] 

여기에 목표는 점을 쉽게 검색이 두 곳 (a, b --> (1, 2), (3, 4) 등)의 조합 좌표,하지만 난 이 계산 방법을 모르거나 MultiIndex를 사용할 수 있는지 여부 그것을해라. 색인 기반 솔루션은 이상적입니다. 각 위치 쌍에 대해 데이터 (예 : 계산 된 경로)를 저장하기를 원하기 때문입니다.

+0

잘 모르겠어요 내가 뭘 되 고 이해하는 경우 여기에 물었다. 여기에서 순열을 생성하는 것이 중요할까요? 아니면'df.get_coord ('a', 'b') -> (1,2), (3, 4)'와 같은 일을 할 수 있는지에 관한 것입니다. 유용한 중간 단계입니까? – Marius

+0

@marius 일반적으로 입력 시리즈를 취할 수있는 최선의 방법을 결정하고 시리즈의 각 2- 튜플 순열에 대해 계산 된 값을 저장하고 검색 할 수있게하는 DataFrame으로 끝내려고합니다. 순열을 생성하는 것은 좋은 일이며, 분명히 그 자체로도 유용 할 것입니다. – urschrei

답변

2

시작 지점으로 DF 사용 :

이 당신이 원하는,하지만 문제는이 내게주는 경우
Index = list(permutations(df.index, 2)) 
new_df = pd.DataFrame({ 
     'route' : [[df.loc[Ind[0], 'coords'], df.loc[Ind[1], 'coords']] for Ind in Index] 
         }, index = Index) 

확실하지 :

In [21]: new_df 
Out[21]: 
        route 
(a, b) [(1, 2), (3, 4)] 
(a, c) [(1, 2), (5, 6)] 
(a, d) [(1, 2), (7, 8)] 
(b, a) [(3, 4), (1, 2)] 
(b, c) [(3, 4), (5, 6)] 
(b, d) [(3, 4), (7, 8)] 
(c, a) [(5, 6), (1, 2)] 
(c, b) [(5, 6), (3, 4)] 
(c, d) [(5, 6), (7, 8)] 
(d, a) [(7, 8), (1, 2)] 
(d, b) [(7, 8), (3, 4)] 
(d, c) [(7, 8), (5, 6)] 
관련 문제