我创建了一个类别变量,我想为其他变量的特定值创建一个新类别
我有一个带有变量Score
的数据帧,该变量的取值范围为0-100。我确实从中解脱出来,但我想为特定值创建一个新类别
df['Score_pr']=pd.qcut(df['Score'] ,10,duplicates='drop')
df.loc[X_n['Score']==1,'Score_pr']='0'
对于所有有0
的情况,我希望有一个新的类别Score=1
但我收到此消息:
无法在具有新类别的分类上设置项目,请将 类别优先
答案 0 :(得分:0)
该错误表示您需要先设置类别,然后再为其分配内容。因此,创建它。这是指向doc的链接。
由于您没有提供输出,所以我不知道这是否是您想要的,但是我想就是这样。
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)