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

如何为两个不同的DataFrame应用一致的cat.codes编码?

统一两个DataFrame的分类编码方案

要实现你需要的统一编码,关键是先定义全局一致的分类顺序列表,再让两个DataFrame的levels列基于这个列表转换为分类类型,这样cat.codes就会严格遵循目标映射。

具体实现步骤:

  1. 按目标映射的顺序定义分类列表
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']
  1. 为两个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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:58:18