2016-08-04 1 views
5

보조 인덱스에서 다중 값 DataFrame을 여러 값으로 분할하려고합니다. 예를 들어, 다음 DataFrame에 보낸 사람,지정된 수준의 다중 값으로 다중 인덱스 DataFrame 분할

  val1 val2 
ind1 ind2    
1 6  10  8 
2 7  20  6 
5 10  60  0 

최고의 가상 옵션 .xs에 여러 인수를 전달하는 것입니다 :

   val1 val2 
ind1 ind2 ind3    
1 6 s1  10  8 
2 7 s1  20  6 
3 8 s2  30  4 
4 9 s2  50  2 
5 10 s3  60  0 

나는 ind3 == s1또는ind3 == s3있는 행만를 슬라이스 할 원하는 level을 명시 적으로 지정할 수 있습니다.

내가 할 수 분명히 CONCAT 모든 슬라이스별로 단일 값 DataFrames :

In[2]: pd.concat([df.xs('s1',level=2), df.xs('s3',level=2)]) 
Out[2]: 
      val1 val2 
ind1 ind2    
1 6  10  8 
2 7  20  6 
5 10  60  0 

그러나 2 개 이상의 값을 사용하는 경우 너무 읽을 수 지루하고 아니다 (A)(B) 큰 DataFrames의 경우 꽤 무겁습니다 (또는 존재하는 경우 다중 값 슬라이싱 옵션보다 무거움).

import pandas as pd 
df = pd.DataFrame({'ind1':[1,2,3,4,5], 'ind2':[6,7,8,9,10], 'ind3':['s1','s1','s2','s2','s3'], 'val1':[10,20,30,50,60], 'val2':[8,6,4,2,0]}).set_index(['ind1','ind2','ind3']) 

답변