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

如何查看Python pandas列文本因式分解对应的数值映射关系

pandas因式分解映射关系输出方案

实现逻辑

pd.factorize()返回值为二元元组:第一个元素是编码后的整数数组,第二个元素是按编码顺序排列的原始唯一文本值。现有逻辑里给编码值统一加了1,因此原始唯一值从1开始计数的序号,刚好和DataFrame里存储的编码一一对应,在循环处理列时提取这部分内容打印即可。

场景参考

  • 因式分解前的原始文本数据:
    因式分解前数据预览
  • 原有基础因式分解代码:
def factorize_fun(df):
    obj_cols = df.loc[:, df.dtypes == object].columns
    for col in obj_cols:
        df[col] = pd.factorize(df[col])[0] +1
    return df

df=factorize_fun(df)
  • 因式分解后的数据效果:
    因式分解后数据预览

可直接运行的完整代码

版本1:直接按要求格式打印映射

处理每列时自动打印列名、以及编码和原始文本的对应关系,和期望的输出格式完全一致:

import pandas as pd

def factorize_fun(df):
    obj_cols = df.loc[:, df.dtypes == object].columns
    for col in obj_cols:
        codes, uniques = pd.factorize(df[col])
        df[col] = codes + 1
        # 按指定格式输出映射
        print(col)
        for code_num, text_val in enumerate(uniques, start=1):
            print(f"{code_num} {text_val}")
        # 列之间加空行分隔,提升可读性
        print()
    return df

df = factorize_fun(df)

版本2:打印同时保存映射字典供后续调用

如果后续需要反向查询编码对应的文本值,可以把映射关系存为字典返回:

import pandas as pd

def factorize_fun(df):
    obj_cols = df.loc[:, df.dtypes == object].columns
    factorize_mapping = {}
    for col in obj_cols:
        codes, uniques = pd.factorize(df[col])
        df[col] = codes + 1
        # 构建当前列的 编码:原始文本 映射
        col_map = {idx: val for idx, val in enumerate(uniques, start=1)}
        factorize_mapping[col] = col_map
        # 按指定格式打印
        print(col)
        for code_num, text_val in col_map.items():
            print(f"{code_num} {text_val}")
        print()
    return df, factorize_mapping

# 调用时同时拿到处理后的数据和全量映射
df, code_map = factorize_fun(df)

输出效果示例

执行代码后控制台会逐列输出对应关系,格式如下:

kindly specify your gender
1 Male
2 Female

内容的提问来源于stack exchange,提问作者Hammad Shahzad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:33:19