Python实现for循环对DataFrame指定特征列表的批量分类编码
批量分类编码实现方案
基础变量调整
将原代码中与DataFrame常用命名冲突的特征列表重新定义为独立变量:cat_feature_list = ['TRY', 'LOC', 'OUTPUT', 'TYPE_A', 'SIGNAL', 'A-B SPOT']
提示:列表中的A-B SPOT保留原列名的双空格格式,确保键值匹配不报错。
循环实现逻辑
完全复用你已掌握的单特征处理流程,无需引入额外第三方封装库,逐特征完成转换后将所有编码结果存入独立的新DataFrame,全程不修改原obj_df的原始数据:
import pandas as pd # 初始化存储编码结果的空DataFrame encoded_df = pd.DataFrame() # 遍历所有待处理分类特征 for col in cat_feature_list: # 复用原有单特征的两步处理逻辑 converted_col = obj_df[col].astype('category') # 沿用你之前的编码列命名规则:原列名加_cat后缀 encoded_col_name = f"{col}_cat" # 将编码结果存入新DataFrame encoded_df[encoded_col_name] = converted_col.cat.codes
实用扩展提示
- 如果需要后续反向解码,可在循环过程中同步记录类别与编码的映射关系:
cat_mapping = {} for col in cat_feature_list: converted_col = obj_df[col].astype('category') encoded_df[f"{col}_cat"] = converted_col.cat.codes # 存储映射关系:编码值 -> 原始类别文本 cat_mapping[col] = dict(enumerate(converted_col.cat.categories)) - 原特征中的空值会被
.cat.codes自动标记为-1,无需额外做缺失值预处理。 - 如果需要把原始列和编码列整合为同一份输出,可按索引拼接生成最终结果:
final_output = pd.concat([obj_df, encoded_df], axis=1)
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

