我已经从agebin列创建了age列。我有ages的范围,但是如何将它们转换为agebin数值数据类型,因为我想检查agebin是否重要。

我尝试了以下代码进行年龄划分:

    traindata = data.assign(age_bins =  pd.cut(data.age, 4, retbins=False, include_lowest=True))

    data['agebin'] = traindata['age_bins']

data['agebin'].unique()

[[16.954, 28.5], (28.5, 40], (40, 51.5], (51.5, 63]]
Categories (4, object): [[16.954, 28.5] < (28.5, 40] < (40, 51.5] < (51.5, 63]]


我试过了

data['enc_agebin'] = data.agebin.map({[16.954, 28.5]:1,(28.5, 40]:2,(40, 51.5]:3,(51.5, 63]:4})


我试图映射每个范围并将其转换为数值,但出现语法错误。请提出一些很好的技巧来将agebin转换为数值数据。

最佳答案

我认为需要labels中的参数cut

data = pd.DataFrame({'age':[10,20,40,50,44,56,12,34,56]})

data['agebin'] = pd.cut(data.age,bins=4,labels=range(1, 5), retbins=False,include_lowest=True)
print (data)
   age agebin
0   10      1
1   20      1
2   40      3
3   50      4
4   44      3
5   56      4
6   12      1
7   34      3
8   56      4


或使用labels=False,然后第一个bin是0,最后一个3(如range(4)):

data['agebin'] = pd.cut(data.age, bins=4, labels=False, retbins=False, include_lowest=True)
print (data)
   age  agebin
0   10       0
1   20       0
2   40       2
3   50       3
4   44       2
5   56       3
6   12       0
7   34       2
8   56       3

关于python - 如何将年龄划分功能替换为数字数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50784907/

10-12 23:54