我需要对数据集中某个特征的字符串值进行分类,以便进一步用于其他用途,比如预测或绘图。
如何转换这些数据?
我找到了一个解决方案,但在这里我必须为该特征的每个唯一值手动编写代码。对于2-3个唯一值,这还可以接受,但是我有一个特征包含超过50个国家的唯一值,我不能为每个国家都编写代码。
def sex_class(x): if x == 'male': return 1 else: return 0
这将特征 – 性别中的男性值更改为1,女性值更改为0。
回答:
rank
或 pd.factorize
df['ID_int'] = df['id'].rank(method='dense').astype(int)df['ID_int2'] = pd.factorize(df['id'])[0]
输出:
id ID_int ID_int20 a 2 01 b 3 12 c 4 23 a 2 04 b 3 15 c 4 26 A 1 37 b 3 1
标签不同,但一致性保持不变。