gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:26 26 4
gpt4 key购买 nike

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

我有一个带有变量 Score 的数据框,其值介于 0-100 之间。我做了十分之一,但我想为特定值创建一个新类别

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

df.loc[X_n['Score']==1,'Score_pr']='0'

我希望所有具有 Score=1 的案例都有一个新类别 0但我收到了这样的消息:

Cannot setitem on a Categorical with a new category, set the categories first

最佳答案

该错误字面意思是您需要先设置类别,然后再为其分配内容。所以,创建它。这是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)

关于python - 如何在 qcut 之后在分类变量中添加新类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54422643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com