python - Pandas - 更改因子类型对象的级别顺序

标签 python pandas

我有一个 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]

See the reordering categories section of the docs .

关于python - Pandas - 更改因子类型对象的级别顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38023881/

相关文章:

python - <lambda>() 接受 1 个位置参数,但给出了 2 个

python - 不使用正则表达式删除字符串中的标点符号和空格

为数据框中的每个点获取最近点的 Pythonic 方法(最近邻)

python - 时间戳偏移量(天、小时、分钟等)

python - 相对于定义的质心,图像中的颜色分布是什么

python - 在 turtle 图形中以圆形图案绘制矩形

python - 如何在Python中使用带有法语字符的csv.reader,例如é,à,ç,ê,ë,

python - Dask - 将多个列合并为单个列

python - 如何使用 pandas 列和字典有效地构建特征?

python - Pandas to_sql 中行的排序