如何将DataFrame中字母数字类型的object列转换为int类型?
解决方案
首先明确:你的Column1包含字母和横杠这类非数字字符,无法直接转换为整数类型,只能通过给每个唯一的字符串分配一个唯一整数的方式实现需求,以下是两种可靠方案:
方案1:使用pandas内置的factorize()方法
这是最简洁的方式,factorize()会自动为每个唯一值生成从0开始的整数标签,若需要从1开始,可直接加1:
# 生成从0开始的整数标签 df['int_column'] = pd.factorize(df['Column1'])[0] # 生成从1开始的整数标签 df['int_column'] = pd.factorize(df['Column1'])[0] + 1
方案2:手动创建映射字典
先提取Column1的所有唯一值,再构建字符串到整数的映射关系,最后用map()完成转换:
# 获取Column1的唯一值列表 unique_vals = df['Column1'].unique() # 创建映射字典:唯一值对应从1开始的整数 val_to_int = {val: idx+1 for idx, val in enumerate(unique_vals)} # 生成新列 df['int_column'] = df['Column1'].map(val_to_int)
你之前的方法报错原因
直接给map()传入numpy数组或range对象是错误的,map()需要的是键为原字符串、值为目标整数的字典,或是可调用函数,数组/range无法直接作为映射规则,因此会出现"numpy数组不可调用"类的报错。
内容的提问来源于stack exchange,提问作者csingleton19
相关产品推荐
相关产品推荐

