2016-07-11 4 views
4

의 모든 수준은 내가 dataframe 있습니다.스택 MultiIndex

0 a A One  0 
     Two  1 
     B One  2 
     Two  3 
    b A One  4 
     Two  5 
     B One  6 
     Two  7 
1 a A One  8 
     Two  9 
     B One 10 
     Two 11 
    b A One 12 
     Two 13 
     B One 14 
     Two 15 
dtype: int64 

답변

4

먼저, 수준의 len을 찾을 range을 얻고 stack에 전달할 수 있습니다 :

나는 결과가 다음과 같을 것으로 예상

print (df.columns.nlevels) 
3 

print (list(range(df.columns.nlevels))) 
[0, 1, 2] 

print (df.stack(list(range(df.columns.nlevels)))) 
0 a A One  0 
     Two  1 
     B One  2 
     Two  3 
    b A One  4 
     Two  5 
     B One  6 
     Two  7 
1 a A One  8 
     Two  9 
     B One 10 
     Two 11 
    b A One 12 
     Two 13 
     B One 14 
     Two 15 
dtype: int32 
+0

을 내가 한 AN/다른 사람의 경우' isinstance (df.columns, pd.MultiIndex)'. 나는 nlevels에 대해 몰랐다. – piRSquared

+0

'df.stack (range (df.columns.nlevels))'이 파이썬 3에서 실패할까요? Notice'list'에 대한 호출을 삭제했습니다. – piRSquared

+1

예, 'KeyError :'수준 범위 (0, 3)을 찾을 수 없음 '오류를 반환합니다.' – jezrael