Python Jupyter Notebook多条件布尔索引报错求助:筛选幸存女性乘客
解决泰坦尼克号数据集多条件筛选问题
错误原因
你写的代码报错是因为链式索引(先筛选幸存乘客再找女性)会生成一个和原数据集titan_sub索引不匹配的布尔序列,导致索引对齐失败,触发IndexingError。
正确写法(两种简单方案)
方案1:用&连接多条件(需加括号)
直接在原数据集上同时判断两个条件,避免索引错位:
# 筛选幸存的女性乘客 survived_females = titan_sub[(titan_sub['survived'] == 1) & (titan_sub['sex'] == 'female')] # 查看她们的舱位等级(如果字段是英文请改成'pclass') print(survived_females['舱位等级'])
方案2:用query()方法(更直观易读)
适合新手的简洁写法,直接用类SQL的语法:
# 筛选条件用字符串写,更易懂 survived_females = titan_sub.query('survived == 1 and sex == "female"') # 查看舱位等级 print(survived_females['舱位等级'])
补充说明
- 多条件筛选时,
&代表逻辑“与”,|代表逻辑“或”,每个条件必须用括号包裹,否则会触发运算优先级错误。 - 如果只想保留舱位等级这一列,可以直接在筛选时指定:
# 直接获取幸存女性的舱位等级列 survived_female_pclass = titan_sub.loc[(titan_sub['survived'] == 1) & (titan_sub['sex'] == 'female'), '舱位等级']
内容的提问来源于stack exchange,提问作者VeryIncognito
相关产品推荐
相关产品推荐

