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

清洗Python DataFrame:将Gender列统一为Male/Female格式

统一DataFrame中Gender列的性别表述方案

问题分析

你的代码没生效大概率是这几个原因:

  • 没处理大小写差异:比如Female、F不在你的misspellings列表里,精确匹配碰不到
  • 没清理前后空格:如果单元格里是female(带空格),精确匹配也找不到
  • 仅覆盖了部分女性变体,且没处理男性的类似情况
  • 循环replace效率低,且容易遗漏边缘情况

解决方案

方法1:统一格式化后用字典批量映射(推荐)

先把所有文本转小写、去空格,再用字典一次性完成所有替换,清晰高效:

import pandas as pd

df = pd.read_csv('my csv file.csv')

# 第一步:统一格式化——转小写+去除前后空格,避免空格/大小写干扰
df['Gender'] = df['Gender'].astype(str).str.strip().str.lower()

# 第二步:定义所有性别变体的映射规则,把所有对应女性/男性的表述统一
gender_mapping = {
    # 女性相关变体
    'female': 'Female',
    'f': 'Female',
    'woman': 'Female',
    'femail': 'Female',
    'cis-female/femme': 'Female',
    'female (cis)': 'Female',
    'cis female': 'Female',
    'femake': 'Female',
    # 男性相关变体,根据你的数据补充
    'male': 'Male',
    'm': 'Male',
    'man': 'Male',
    'cis-male': 'Male',
    'male (cis)': 'Male'
}

# 第三步:完成映射,未匹配到的设为'Other'(也可以保留原内容,根据需求调整)
df['Gender'] = df['Gender'].map(gender_mapping).fillna('Other')

方法2:正则表达式匹配替换

如果变体更多,用正则可以更灵活地匹配相似表述:

import pandas as pd

df = pd.read_csv('my csv file.csv')

# 先统一格式化
df['Gender'] = df['Gender'].astype(str).str.strip().str.lower()

# 匹配所有女性变体,替换为Female
df['Gender'] = df['Gender'].replace(
    r'^(female|f|woman|femail|cis-female/femme|female \(cis\)|cis female|femake)$',
    'Female',
    regex=True
)

# 匹配所有男性变体,替换为Male
df['Gender'] = df['Gender'].replace(
    r'^(male|m|man|cis-male|male \(cis\))$',
    'Male',
    regex=True
)

# 未匹配的设为Other
df['Gender'] = df['Gender'].where(df['Gender'].isin(['Female', 'Male']), 'Other')

验证结果

替换后执行以下代码,检查性别列的分布是否符合预期:

print(df['Gender'].value_counts())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:10:51