Python 熊猫-更改因子类型对象的级别顺序
我有一个熊猫数据框Python 熊猫-更改因子类型对象的级别顺序,python,pandas,Python,Pandas,我有一个熊猫数据框df,列school作为因子 Name school A An B Bn C Bn 如何在python中将school列的级别从('An','Bn')更改为('Bn','An') R当量为 levels(df$school) = c('Bn','An') 作为一般解决方案,您可以使用字典重新映射: df = pd.DataFrame({'Name': ['A', 'B', 'C'], 'sch
df
,列school
作为因子
Name school
A An
B Bn
C Bn
如何在python中将school
列的级别从('An','Bn')更改为('Bn','An')
R当量为
levels(df$school) = c('Bn','An')
作为一般解决方案,您可以使用字典重新映射:
df = pd.DataFrame({'Name': ['A', 'B', 'C'],
'school': ['An', 'Bn', 'Bn']})
d = {'An': 'Bn', 'Bn': 'An'}
df['school'] = df.school.map(d)
>>> df
Name school
0 A Bn
1 B An
2 C 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]
.您可以设置
类别
:
import pandas as pd
school = pd.Series(["An", "Bn", "Bn"])
school = school.astype("category")
school.cat.categories = ["Bn", "An"]
我对R不太了解,不能说这是否正确,也不能说我的答案是否正确。我想这要看你的意图了!我最初的回答也使用了分类,但我对R也不太熟悉,无法推断OP只是重命名值还是重新排序类别。我想这不是OP想要的
pandas.Series.cat.categories
使用输入列表替换数据集中的值(因此级别“an”
现在将是“Bn”
,反之亦然),而问题只是更改级别的顺序。
import pandas as pd
school = pd.Series(["An", "Bn", "Bn"])
school = school.astype("category")
school.cat.categories = ["Bn", "An"]