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

如何在Python DataFrame中基于种族与性别创建Gen_Eth新列?

实现Gen_Eth列编码的几种方法

以下是针对你的人口统计数据集,生成Gen_Eth编码列的三种实用方法,均基于Python pandas库(处理大型数据集的常用工具):

方法1:嵌套if-else条件判断

适合刚接触数据处理、需要清晰理解逻辑的场景,通过自定义函数结合apply实现:

import pandas as pd

# 自定义编码函数
def get_gen_eth(row):
    if row['Ethnicity'] == 'African American':
        return 0 if row['Gender'] == 'M' else 1
    elif row['Ethnicity'] == 'White':
        return 2 if row['Gender'] == 'M' else 3
    elif row['Ethnicity'] == 'Latino':
        return 4 if row['Gender'] == 'M' else 5
    elif row['Ethnicity'] == 'Asian':
        return 6 if row['Gender'] == 'M' else 7

# 假设你的数据集是df,生成新列
df['Gen_Eth'] = df.apply(get_gen_eth, axis=1)

注:apply逐行处理数据,大型数据集下效率略低,更推荐后两种方法。

方法2:构建映射字典(高效简洁)

提前定义所有Ethnicity+Gender组合与编码的映射关系,利用map实现批量转换,适合大型数据集:

# 构建映射字典
gen_eth_map = {
    ('African American', 'M'): 0,
    ('African American', 'F'): 1,
    ('White', 'M'): 2,
    ('White', 'F'): 3,
    ('Latino', 'M'): 4,
    ('Latino', 'F'): 5,
    ('Asian', 'M'): 6,
    ('Asian', 'F'): 7
}

# 将Ethnicity和Gender合并为元组后映射编码
df['Gen_Eth'] = list(map(gen_eth_map.get, zip(df['Ethnicity'], df['Gender'])))

这种方法避免了条件判断,字典查找的时间复杂度更低,处理大数据集速度更快。

方法3:数值编码结合计算(最优效率)

通过给Ethnicity分配基础编码,再结合Gender的二进制编码,用数学计算直接得到结果,完全适配pandas向量化特性,性能最优:

# 给Ethnicity分配基础编码(对应男性的初始值)
ethnicity_base = {
    'African American': 0,
    'White': 2,
    'Latino': 4,
    'Asian': 6
}
# Gender转数值:M=0,F=1
gender_code = df['Gender'].map({'M':0, 'F':1})

# 基础编码 + Gender编码 = 最终Gen_Eth
df['Gen_Eth'] = df['Ethnicity'].map(ethnicity_base) + gender_code

这种方法无需逐行处理,百万级以上数据集下优势尤为明显。

内容的提问来源于stack exchange,提问作者Johnn-1231

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:06