使用pandas将性别列Other值替换为各半比例male和Female的实现方法
Pandas 替换性别列 Other 取值的实现方案
假设你的数据集存储在名为 df 的 DataFrame 中,性别字段列名为 gender,可按以下步骤操作:
实现逻辑
- 筛选出所有性别为
Other的记录的行掩码 - 按照 50% 概率生成对应数量的
male和Female取值序列 - 将生成的序列赋值给原数据集中对应行的性别列
基础实现代码
import pandas as pd import numpy as np # 1. 筛选所有取值为Other的记录 other_mask = df['gender'] == 'Other' other_count = other_mask.sum() # 2. 生成随机替换值,male、Female各占50%概率 replace_vals = np.random.choice(['male', 'Female'], size=other_count, p=[0.5, 0.5]) # 3. 把替换值赋值回原数据集对应位置 df.loc[other_mask, 'gender'] = replace_vals
可选优化方案
- 若需要固定随机结果方便复现,可在生成替换值前添加固定随机种子的代码:
np.random.seed(123),其中123可替换为任意整数 - 若需要严格接近50%的拆分比例(避免小样本下随机波动过大),可替换生成替换值的代码段:
# 偶数个Other时刚好各占一半,奇数时差1个 male_cnt = other_count // 2 female_cnt = other_count - male_cnt replace_vals = np.array(['male'] * male_cnt + ['Female'] * female_cnt) # 打乱顺序避免按行顺序固定分配 np.random.shuffle(replace_vals)
内容的提问来源于stack exchange,提问作者isayoyo
相关产品推荐
相关产品推荐

