我有一个 Pandas 数据框 df
,其中列 school
作为因子
Name school
A An
B Bn
C Bn
如何在 python 中将 school
列的级别从 ('An', 'Bn') 更改为 ('Bn', 'An')?
R 等价于
levels(df$school) = c('Bn','An')
最佳答案
您可以使用 reorder_categories
(你传入排序的因素):
In [11]: df
Out[11]:
Name school
0 A An
1 B Bn
2 C Bn
In [12]: df['school'] = df['school'].astype('category')
In [13]: df['school']
Out[13]:
0 An
1 Bn
2 Bn
Name: school, dtype: category
Categories (2, object): [An, Bn]
In [14]: df['school'].cat.reorder_categories(['Bn', 'An'])
Out[14]:
0 An
1 Bn
2 Bn
dtype: category
Categories (2, object): [Bn, An]
您可以就地执行此操作:
In [21]: df['school'].cat.reorder_categories(['Bn', 'An'], inplace=True)
In [22]: df['school']
Out[22]:
0 An
1 Bn
2 Bn
Name: school, dtype: category
Categories (2, object): [Bn, An]
关于python - Pandas - 更改因子类型对象的级别顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38023881/