You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:30:54