在Python中将数值数据转换为分类数据

问题描述

我有一个熊猫数据框,其中fert_Rate列表示生育率。我想创建一个新列,将这些值作为分类而不是数字。我想要的不是1.0、2.5、4.0,而是(低,中,高)。在R中,我会这样写:

attach(mydata)
mydata$fertcat[fert_Rate > 3.5] <- "High"
mydata$fertcat[fert_Rate > 2 & fert_Rate <= 3.5] <- "Medium"
mydata$fertcat[fert_Rate <= 2] <- "Low"
detach(mydata)

在python中有类似的方法吗?还是应该在列上循环创建?

解决方法

使用pd.cut来对数据进行装箱。

df = pd.DataFrame({'fert_Rate': [1,2,3,3.5,4,5]})
>>> df.assign(fertility=pd.cut(df['fert_Rate'],bins=[0,999],labels=['Low','Medium','High']))
   fert_Rate fertility
0        1.0       Low
1        2.0       Low
2        3.0    Medium
3        3.5    Medium
4        4.0      High
5        5.0      High