如何用Pandas将字符串列转为新整数列?已尝试pd.get_dummies
字符串列转指定整数映射的解决方案
方法1:自定义映射字典 + map() 方法
这是最贴合需求的方式,手动定义映射关系后直接转换:
import pandas as pd # 示例数据 df = pd.DataFrame({ 'department_str': ['sales', 'RandD', 'tech', 'sales', 'tech'] }) # 定义你需要的映射规则 dept_mapping = {'sales': 1, 'RandD': 2, 'tech': 3} # 生成目标整数列 df['department_int'] = df['department_str'].map(dept_mapping)
执行后就能得到你想要的department_int列,完全匹配指定的映射关系。
方法2:分类编码(需指定顺序)
如果不需要硬编码映射值,只要保证每个类别对应唯一整数,可通过分类类型实现,注意要指定类别顺序来匹配你的需求:
# 指定类别顺序,确保编码对应正确的整数 df['department_int'] = df['department_str'].astype( pd.CategoricalDtype(categories=['sales', 'RandD', 'tech'], ordered=True) ).cat.codes + 1 # 加1是因为默认编码从0开始,转为从1起始
为什么pd.get_dummies不适用?
pd.get_dummies()的作用是生成独热编码,会为每个字符串类别生成单独的二进制列(0或1),比如生成sales、RandD、tech三列,这和你需要的单一整数列需求不符,所以不适合这个场景。
内容的提问来源于stack exchange,提问作者Mick Hirsh
相关产品推荐
相关产品推荐

