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

如何为Pandas DataFrame的TYPE列替换唯一ID并导出映射字典?

解决Pandas字符串列转整数ID并导出映射字典的问题

我来帮你搞定这个问题!这里有两种可靠的方法,既能把你的TYPE列转成1-400的整数ID,又能轻松导出映射字典:

方法一:用pd.factorize快速实现(推荐)

factorize是Pandas专门用来将分类数据编码为整数的工具,默认从0开始编码,我们只需要加1就能得到从1开始的ID,同时可以直接拿到唯一值列表来构建映射字典:

import pandas as pd

# 假设你的DataFrame是df
# 对TYPE列进行编码,得到编码结果和唯一值列表
codes, unique_types = pd.factorize(df['TYPE'])

# 将编码结果+1,得到1-400的ID,替换原列或者新增列
df['TYPE'] = codes + 1  # 替换原列
# 或者新增一列:df['TYPE_ID'] = codes + 1

# 构建TYPE到ID的映射字典
type_to_id = dict(zip(unique_types, range(1, len(unique_types)+1)))

方法二:手动构建映射字典(更灵活)

如果你需要自定义唯一值的顺序(比如按字母排序),可以手动生成映射:

# 获取所有唯一的TYPE值,这里可以按需求排序,比如sorted(df['TYPE'].unique())
unique_types = df['TYPE'].unique()

# 生成从1开始的ID映射字典
type_to_id = {type_val: idx + 1 for idx, type_val in enumerate(unique_types)}

# 将原列替换为对应的ID
df['TYPE'] = df['TYPE'].map(type_to_id)

导出映射字典供后续使用

不管用哪种方法,最后都可以把type_to_id字典保存下来,比如用JSON格式:

import json

# 保存到本地文件
with open('type_id_mapping.json', 'w', encoding='utf-8') as f:
    json.dump(type_to_id, f, indent=4, ensure_ascii=False)

为什么之前用to_dict没成功?

大概率是你没有把唯一值和对应的ID正确关联起来。比如直接对编码后的列用to_dict,得到的是行索引到ID的映射,而不是TYPE值到ID的映射。上面的两种方法都是先拿到唯一的TYPE值,再和ID一一对应,这样生成的字典才是你需要的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:27:40