如何修改Pandas代码以保留男女样本并完成性别列数值映射?
修正性别列处理代码,确保正确保留男女样本
原代码的问题在于,它把所有非"F"的条目(包括空值、拼写错误的性别值等)都统一标记为1(男性),这会导致非男非女的异常样本被误归类,无法准确保留真实的男女样本。
下面提供两种修改方案,根据你的需求选择:
方案1:仅标记明确的男女,异常值设为NaN
这种方式会把明确的"F"转为0,"M"转为1,其他所有无法识别的值设为NaN,方便后续对异常值进行过滤或填充:
import numpy as np data['Gender'] = data['Gender'].str.strip() # 嵌套np.where实现双条件判断 data['Gender'] = np.where(data['Gender'] == "F", 0, np.where(data['Gender'] == "M", 1, np.nan)) data['Gender'] = data['Gender'].astype(float)
方案2:保留原始异常值,仅转换已知男女
如果需要保留无法识别的原始性别值(用于后续排查数据问题),可以使用字典映射的方式:
data['Gender'] = data['Gender'].str.strip() # 定义男女对应的数值映射 gender_mapping = {"F": 0.0, "M": 1.0} # 仅转换匹配到的键,未匹配的保持原始值 data['Gender'] = data['Gender'].map(gender_mapping)
内容的提问来源于stack exchange,提问作者Brad P
相关产品推荐
相关产品推荐

