You need to enable JavaScript to run this app. Python实现for循环对DataFrame指定特征列表的批量分类编码
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 10:45:03