如何为两个不同的DataFrame应用一致的cat.codes编码?
统一两个DataFrame的分类编码方案
要实现你需要的统一编码,关键是先定义全局一致的分类顺序列表,再让两个DataFrame的levels列基于这个列表转换为分类类型,这样cat.codes就会严格遵循目标映射。
具体实现步骤:
- 按目标映射的顺序定义分类列表
import pandas as pd # 对应目标映射{0: 'Level 0', 1: 'Level 10', 2: 'Level 20', 3: 'Level 30', 4: 'Level 40'} level_categories = ['Level 0', 'Level 10', 'Level 20', 'Level 30', 'Level 40']
- 为两个DataFrame的
levels列指定全局分类并转换编码
# 处理X_train X_train['levels'] = pd.Categorical(X_train['levels'], categories=level_categories, ordered=True) X_train['levels'] = X_train['levels'].cat.codes # 处理X_test,使用完全相同的分类规则 X_test['levels'] = pd.Categorical(X_test['levels'], categories=level_categories, ordered=True) X_test['levels'] = X_test['levels'].cat.codes
补充说明:
- 这样处理后,X_train中的
Level 0→0、Level 10→1、Level 30→3;X_test中的Level 20→2、Level 40→4,完全匹配你的目标映射。 - 如果数据中可能出现不在分类列表里的异常值,可以添加
handle_unknown='ignore'参数,这类值会被编码为-1(默认是抛出异常):
X_train['levels'] = pd.Categorical(X_train['levels'], categories=level_categories, ordered=True, handle_unknown='ignore')
内容的提问来源于stack exchange,提问作者Katsu
相关产品推荐
相关产品推荐

