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

如何在pandas DataFrame中实现指定规则的自定义类别编码?

解决方案

方法1:字典映射(最直观高效)

直接定义水果到编码的映射关系,用map完成转换,不在映射中的值统一设为5:

import pandas as pd

# 定义映射规则(注意匹配数据中水果的实际拼写)
fruit_code = {
    'Apple': 1,
    'Pineapple': 2,
    'Orange': 3,
    'Strawberry': 4  # 示例中为Strawberrry,需根据真实数据调整拼写
}

# 执行映射,缺失值(不在字典中的水果)填充为5并转为整数
df['Master'] = df['Master'].map(fruit_code).fillna(5).astype(int)

方法2:批量条件替换

适合需要明确控制每个条件的场景,先统一设为默认值5,再逐个替换目标水果:

import pandas as pd

# 初始化所有值为5
df['Master'] = 5

# 替换指定水果的编码
df.loc[df['Master'] == 'Apple', 'Master'] = 1
df.loc[df['Master'] == 'Pineapple', 'Master'] = 2
df.loc[df['Master'] == 'Orange', 'Master'] = 3
df.loc[df['Master'] == 'Strawberry', 'Master'] = 4

方法3:分类类型编码

如果需要保留分类语义,可利用Pandas的分类类型实现编码:

import pandas as pd

# 先将非目标水果统一替换为'Other'
target_fruits = {'Apple', 'Pineapple', 'Orange', 'Strawberry'}
df['Master'] = df['Master'].apply(lambda x: x if x in target_fruits else 'Other')

# 定义分类顺序并转换为编码
df['Master'] = pd.Categorical(df['Master'], 
                              categories=['Apple', 'Pineapple', 'Orange', 'Strawberry', 'Other'],
                              ordered=True).cat.codes + 1

注意:如果数据中水果存在拼写差异(比如示例里的Strawberrry),请确保映射字典或条件判断中的拼写与数据完全一致,否则会匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:30:54