У меня есть код, который суммирует DataFrame, содержащий знаменитый набор данных Titanic следующим образом:
titanic['agecat'] = pd.cut(titanic.age, [0, 13, 20, 64, 100],
labels=['child', 'adolescent', 'adult', 'senior'])
titanic.groupby(['agecat', 'pclass','sex']
)['survived'].mean()
Это создает следующий DataFrame с MultiIndex на основе вызова 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. Должно ли это работать, или я использую неправильный подход?