如何将Pandas DataFrame中object类型的customer_id转换为唯一整数值
解决方案
最直接的实现方式是使用pandas内置的factorize()方法,它会自动为每个唯一的原始customer_id分配同一个整数编码,代码如下:
# 生成从0开始的唯一整数编码,可直接覆盖原有customer_id字段 data['customer_id'] = pd.factorize(data['customer_id'])[0] # 若需要编码从1开始,修改为以下写法即可 data['customer_id'] = pd.factorize(data['customer_id'])[0] + 1
原代码失效原因
你使用的rank()方法是基于数值排序生成排名,仅适用于数值类型的customer_id场景,且排序规则和你需要的「按唯一值分配固定整数」的需求不匹配,因此得不到正确结果。
其他可选实现
你也可以通过分类类型编码实现相同效果:
data['customer_id'] = data['customer_id'].astype('category').cat.codes
内容的提问来源于stack exchange,提问作者lucascooelho
相关产品推荐
相关产品推荐

