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'])