Python 在qcut之后,如何在分类变量中添加新类别?

Python 在qcut之后,如何在分类变量中添加新类别?,python,pandas,Python,Pandas,我创建了一个分类变量,我想为其他变量的特定值创建一个新的分类 我有一个带有变量Score的数据帧,该变量取值范围为0-100。我做了十分之一,但我想为一个特定的值创建一个新的类别 df['Score_pr']=pd.qcut(df['Score'] ,10,duplicates='drop') df.loc[X_n['Score']==1,'Score_pr']='0' 我希望所有得分为1的病例都有一个新的分类0 但我有一个信息: 无法在具有新类别的类别上设置项,请设置 类别优先 错误提示您

我创建了一个分类变量,我想为其他变量的特定值创建一个新的分类

我有一个带有变量
Score
的数据帧,该变量取值范围为0-100。我做了十分之一,但我想为一个特定的值创建一个新的类别

df['Score_pr']=pd.qcut(df['Score'] ,10,duplicates='drop')

df.loc[X_n['Score']==1,'Score_pr']='0'
我希望所有得分为1的病例都有一个新的分类
0
但我有一个信息:

无法在具有新类别的类别上设置项,请设置 类别优先


错误提示您需要先设置类别,然后再为其分配内容。所以,创造它。这里有一个链接到

由于您没有提供输出,我不知道这是否是您想要的,但我认为这就是它

df = pd.DataFrame({'Score': [1, 2, 3,4,5,6]*100})
print(df.head())
#      Score
# 0      1
# 1      2
# 2      3
# 3      4
# 4      5
df['Score_pr'] = pd.qcut(df['Score'] , 10, duplicates='drop')
print(df.head())
#      Score      Score_pr
# 0      1  (0.999, 2.0]
# 1      2  (0.999, 2.0]
# 2      3    (2.0, 3.0]
# 3      4    (3.5, 4.0]
# 4      5    (4.0, 5.0]
df['Score_pr'] = df['Score_pr'].cat.add_categories('0')
df.loc[df['Score']==1,'Score_pr']='0'
print(df.head())
#      Score      Score_pr
# 0      1             0
# 1      2  (0.999, 2.0]
# 2      3    (2.0, 3.0]
# 3      4    (3.5, 4.0]
# 4      5    (4.0, 5.0]
如果您想重新排序,使“0”作为第一个类别出现

cat = df['Score_pr'].cat.categories.tolist()
cat = cat[:-1]
cat.insert(0, '0')
series = pd.Series(cat)
df['Score_pr'] = df['Score_pr'].cat.reorder_categories(series)

你能提供一个吗?对不起,我会在3个不同的评论中这样做,因为我不知道如何在一个独特的评论中这样做..:(df=pd.DataFrame({'Score':[1,2,3,4,5,6]*100})df['Score'pr']=pd.qcut(df['Score'],10,duplicates='drop')df.loc[df['Score']==1,'Score'pr']='0'是的!但我现在有一个小问题…我希望新类别是第一个,而不是最后一个…这是…如果我写了[Score'pr'].value\'counts()。排序索引我有这个结果:(0.999, 2.0] 100 (2.0, 3.0] 100 (3.0, 3.5] 0 (3.5, 4.0] 100 (4.0, 5.0] 100 (5.0, 6.0] 100 0 100