Kaggle数据集性别列高效清洗:仅保留Male与Female
高效筛选Kaggle数据集性别列,仅保留'Male'和'Female'
你的代码问题分析
你之前的写法存在两处关键错误:
- 不能用Python原生的
or处理pandas布尔序列筛选,需要用按位或运算符|; or 'Female'的逻辑完全错误——非空字符串在Python中会被判定为True,导致筛选结果混乱;- 分两次单独筛选
Male和Female会清空数据集,因为没有行能同时满足两个互斥条件。
正确的高效筛选方法
方法1:使用isin()(推荐,简洁高效)
isin()是pandas针对多值匹配的最优方案,直接传入目标值列表即可快速筛选:
df_clean = df_clean[df_clean["Gender"].isin(['Male', 'Female'])]
方法2:使用布尔索引(按位或)
如果要显式写出每个条件,需要给每个判断加括号,并用|连接:
df_clean = df_clean[(df_clean["Gender"] == 'Male') | (df_clean["Gender"] == 'Female')]
进阶补充(可选)
如果你的数据中存在'Male teen'、'Female High-schooler'这类包含目标关键词的记录,且希望保留这些行,可以用str.contains()做模糊匹配(支持忽略大小写):
# 匹配包含Male/Female的行,同时排除空值 df_clean = df_clean[df_clean["Gender"].str.contains(r'Male|Female', case=False, na=False)]
内容的提问来源于stack exchange,提问作者Richard Bradley
相关产品推荐
相关产品推荐

