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

Python中如何单命令实现titanic数据集多列多条件子集筛选

解答

完全可以,借助pandas的.loc索引器,单条命令就能同时完成多条件行过滤、指定列选取的全流程操作,不需要拆分步骤生成中间变量。

具体写法

.loc索引支持同时传入行、列两个维度的筛选规则:

  • 第一个位置放行维度的布尔判断逻辑:多个需要同时满足的"且"条件用按位与&拼接,注意每个独立判断条件必须用圆括号包裹,否则会因为Python运算符优先级规则报错;如果是"或"逻辑的条件,用按位或|拼接即可。
  • 第二个位置放列维度的筛选规则:直接传入要保留的列名组成的列表就行。

假设你已经把titanic数据集加载为名为titanic的DataFrame,你提到的"class A乘客"如果对应一等舱(即Pclass字段值为1),直接运行下面这行代码就能得到仅保留Name列、年龄大于40的一等舱乘客数据:

result = titanic.loc[(titanic['Age'] > 40) & (titanic['Pclass'] == 1), ['Name']]

如果你说的class A是指客舱编号以A开头,把对应条件替换成titanic['Cabin'].str.startswith('A', na=False)即可。

避坑提示

不要用连续方括号的链式索引写法(比如titanic[titanic['Age']>40][titanic['Pclass']==1]['Name']),这种写法在你后续对筛选结果做赋值修改时,大概率会触发SettingWithCopyWarning警告,用.loc是pandas官方推荐的稳定写法,不会有隐式的索引拷贝问题。
如果需要保留更多列,直接在第二个参数的列表里追加列名就行,比如要同时保留Name、Fare两列,把['Name']改成['Name', 'Fare']就可以。

内容的提问来源于stack exchange,提问作者Hussnain Akbar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:36:24