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

泰坦尼克号数据集提取幸存男性乘客信息触发IndexingError报错

解决泰坦尼克号数据集筛选幸存男性乘客的IndexingError问题

报错原因分析

你写的代码触发IndexingError的核心问题是布尔索引与原DataFrame的索引不匹配:

  • titanic_train.iloc[np.where(titanic_train["Sex"] == 'male')]["Survived"] == 1得到的布尔Series,仅包含原数据中男性乘客的行(长度等于男性总人数),其索引是原数据里男性的位置下标;
  • 用这个短布尔Series去索引完整的titanic_train(总长度为全体乘客数)时,pandas无法找到对应匹配的索引,因此抛出报错。

正确解决方案

推荐两种简单直接的写法,均可顺利提取幸存男性的姓名:

方案1:直接组合布尔条件(最简洁)

# 筛选出幸存的男性乘客
survived_males = titanic_train[(titanic_train["Sex"] == 'male') & (titanic_train["Survived"] == 1)]
# 提取姓名列
survived_male_names = survived_males["Name"]

方案2:用np.where获取目标行索引

如果一定要用np.where,可以直接组合两个条件,一次性拿到所有符合要求的行下标:

import numpy as np

# 获取所有幸存男性的行位置
target_indices = np.where((titanic_train["Sex"] == 'male') & (titanic_train["Survived"] == 1))[0]
# 提取对应行的姓名
survived_male_names = titanic_train.iloc[target_indices]["Name"]

额外说明

尽量避免拆分条件分步筛选后再合并索引,这种做法容易出现索引对齐问题。pandas支持直接组合多个布尔条件,写法更简洁也更不容易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:06:03