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

Python新手求助:如何用Pandas或Numpy将字符串转为唯一数值?

嘿,作为刚接触Python和深度学习的新手,能关注到类别数据转数值这个点真的很赞!这是数据预处理里非常基础但关键的一步,我给你分享几个简单好用的方法,轻松把这些城市名称转换成唯一数值:

  • 方法一:用pandas自带的factorize()
    这是最直接的方式,pandas专门为这类场景设计了这个函数,能快速给每个唯一类别分配一个整数ID:
import pandas as pd

# 生成城市对应的唯一数值
city_codes, unique_cities = pd.factorize(df['city'])
# 如果你想把结果加到原DataFrame里
df['city_code'] = city_codes

解释一下:city_codes就是每个城市对应的数值数组(从0开始的连续整数),unique_cities会返回对应的唯一城市列表,方便你后续查看映射关系。

  • 方法二:用sklearn的LabelEncoder
    如果你之后要做深度学习建模,sklearn的这个工具会很顺手,它和factorize逻辑类似,但更贴合机器学习的工作流:
from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
# 拟合并转换城市列,生成唯一数值
df['city_code'] = le.fit_transform(df['city'])
# 要是之后想把数值转回城市名称,可以用这个
# original_cities = le.inverse_transform(df['city_code'])

这个方法生成的数值也是从0开始的连续整数,而且可以很方便地逆转换,适合后续需要回溯的场景。

  • 方法三:手动创建映射字典
    如果你想自定义数值(比如不想从0开始,或者给特定城市分配特定ID),可以手动构建一个映射字典:
# 先获取所有唯一城市,然后给每个分配一个ID(这里用索引作为ID)
city_map = {city: idx for idx, city in enumerate(df['city'].unique())}
# 用map函数把城市转换成对应的数值
df['city_code'] = df['city'].map(city_map)

这种方式灵活性最高,你可以根据需求调整字典里的键值对,比如把"NEW YORK"设为100,完全由你决定。

另外提一句:如果之后做深度学习需要更复杂的编码(比如独热编码),可以用pd.get_dummies()或者sklearn的OneHotEncoder,但你要的是唯一数值,上面三个方法就完全够用啦!

内容的提问来源于stack exchange,提问作者Michael Yadidya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:16:37