我有一个如下所示的df:
index life_stage
1 Early Childhood
2 Birth
3 Infancy
...
life_stage
列的排序不正确,我不能依靠字母顺序。
正确的顺序应该是
Birth
Infancy
Early Childhood
是否可以根据我在Pandas中指定的顺序对生命周期列进行排序?
答案 0 :(得分:1)
让我们使用pd.Categorical
将“ life_stage”转换为有序的分类列:
df['life_stage'] = pd.Categorical(
df['life_stage'],
categories=['Birth', 'Infancy', 'Early Childhood'],
ordered=True
)
请注意我为pd.Categorical
指定类别的顺序。现在,使用sort_values
呼叫life_stage
:
df.sort_values(by=['life_stage'])
index life_stage
2 1 Birth
1 2 Infancy
0 3 Early Childhood
作为参考,按字母顺序对“ life_stage”进行排序会使您
index life_stage
2 1 Birth
0 3 Early Childhood # wrong!
1 2 Infancy
答案 1 :(得分:1)
IIUC,您想订购pd.Categorical
:
s = pd.Categorical(['Infancy', 'Birth', 'Early Childhood'],
categories=['Birth', 'Infancy', 'Early Childhood'],
ordered=True)
s.sort_values()
输出:
[Birth, Infancy, Early Childhood]
Categories (3, object): [Birth < Infancy < Early Childhood]