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
相关产品推荐
相关产品推荐

