DF를 그룹화 하면 행이 여러 계층으로 생성된다. 이렇게 행 인덱스를 여러 레벨로 구현할 수 있도록 멀티 인덱스(MultiIndex)클래스를 지원한다.
멀티인덱스에 접근하는 3가지 방법이 있다.
loc[ ' 행 ' ] 과 같이 접근하면 특정값을 갖는 행을 선택할 수 있다.
튜플형태로 각 인덱스에서 찾는 값을 전달하면 접근할 수 있다.
xs인덱서를 사용할 수 있다.
import pandas as pd
import seaborn as sns
titanic = sns.load_dataset('titanic')
df = titanic.loc[:, ['age', 'sex', 'class', 'fare', 'survived']]
grouped = df.groupby(['class', 'sex'])
gdf = grouped.mean()
print(gdf)
print()
# First라는 값을 갖는 행을 선택
print(gdf.loc['First'])
print()
# Tuple로 접근
print(gdf.loc[('First', 'female')])
print()
# xs인덱서 사용
# 'sex'인덱스에서 'male' 값을 갖는 행을 추출한다.
print(gdf.xs('male', level='sex'))
age fare survived
class sex
First female 34.611765 106.125798 0.968085
male 41.281386 67.226127 0.368852
Second female 28.722973 21.970121 0.921053
male 30.740707 19.741782 0.157407
Third female 21.750000 16.118810 0.500000
male 26.507589 12.661633 0.135447
age fare survived
sex
female 34.611765 106.125798 0.968085
male 41.281386 67.226127 0.368852
age 34.611765
fare 106.125798
survived 0.968085
Name: (First, female), dtype: float64
age fare survived
class
First 41.281386 67.226127 0.368852
Second 30.740707 19.741782 0.157407
Third 26.507589 12.661633 0.135447