2014-09-08 4 views
1

데이터 프레임에 대해 lexsort-depth 7로 multiindex를 만들고 싶습니다. 그러나 색인의 몇 가지 깊이에서 나는 같은 가치만을 가지고 있습니다. 팬더 멀티 인덱스 생성자는 같은 값을 가진 생성자를 제외합니다. 내가 그들을 지킬 수있는 방법이 있습니까? 예를 들어pandas 다중 인덱스 퇴화

:

당신은 그것을 전체 lexsort 깊이가하는 첫 번째 MI를 정렬 할 필요가
import pandas as pd 

labels = 
[(0, 0, 5, 0, 1, 0, 0), (0, 0, 5, 0, 1, 0, 0), (0, 0, 5, 0, 1, 0, 0), 
(0, 0, 5, 0, 2, 0, 0), (0, 0, 5, 0, 2, 0, 0), (0, 0, 5, 0, 2, 0, 0), 
(0, 0, 5, 0, 3, 0, 0), (0, 0, 5, 0, 3, 0, 0), (0, 0, 5, 0, 3, 0, 0), 
(0, 0, 5, 0, 0, 0, 0), (0, 0, 5, 0, 0, 0, 0), (0, 0, 5, 0, 0, 0, 0), 
(0, 0, 4, 0, 1, 0, 0), (0, 0, 4, 0, 1, 0, 0), (0, 0, 4, 0, 1, 0, 0), 
(0, 0, 4, 0, 2, 0, 0), (0, 0, 4, 0, 2, 0, 0), (0, 0, 4, 0, 2, 0, 0), 
(0, 0, 4, 0, 3, 0, 0), (0, 0, 4, 0, 3, 0, 0)] 

index = pd.MultiIndex.from_tuples(labels) 
index.lexsort_depth 
>>> 2  # what I want is 7 here 
+0

왜 거기에 7 명이 올까요? 색인이 모든 레벨에서 정렬되지 않기 때문입니다. 'index.sortlevel() [0] .lexsort_depth'는 7을 제공합니다 – joris

+0

@ joris 답장을 보내 주셔서 감사합니다. 실제로 원하는 인덱스의 수를 7로 설정하고 싶습니다. sortlevel은 제공하지 않는 것 같습니다. –

답변

1

: 그것은 두 번째 수준 과거 분류되지 않는 순간

In [11]: index = index.order() 

In [12]: index.lexsort_depth 
Out[12]: 7 

을 (5는 4 이전 임).

관련 문제