次のように、有名な Titanic データセットを含む DataFrame を要約するコードがいくつかあります。
titanic['agecat'] = pd.cut(titanic.age, [0, 13, 20, 64, 100],
labels=['child', 'adolescent', 'adult', 'senior'])
titanic.groupby(['agecat', 'pclass','sex']
)['survived'].mean()
これにより、呼び出しに基づいて MultiIndex を持つ次の DataFrame が生成されgroupby
ます。
agecat pclass sex
adolescent 1 female 1.000000
male 0.200000
2 female 0.923077
male 0.117647
3 female 0.542857
male 0.125000
adult 1 female 0.965517
male 0.343284
2 female 0.868421
male 0.078125
3 female 0.441860
male 0.159184
child 1 female 0.000000
male 1.000000
2 female 1.000000
male 1.000000
3 female 0.483871
male 0.324324
senior 1 female 1.000000
male 0.142857
2 male 0.000000
3 male 0.000000
Name: survived, dtype: float64
ただし、agecat
MultiIndex のレベルを、アルファベット順ではなく、自然に並べる必要があります['child', 'adolescent', 'adult', 'senior']
。ただし、これを使用しようとするreindex
と:
titanic.groupby(['agecat', 'pclass','sex'])['survived'].mean().reindex(
['child', 'adolescent', 'adult', 'senior'], level='agecat')
結果の DataFrame の MultiIndex には影響しません。これは機能するはずですか、それとも間違ったアプローチを使用していますか?