如何为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
相关产品推荐
相关产品推荐

