filter_specific _rows

本文介绍了如何使用Python的pandas库筛选Titanic数据集中的乘客,通过布尔Series和多种条件表达式,如大于35岁的乘客。展示了如何运用map(), apply()和DataFrame的apply()函数来实现复杂条件筛选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import pandas as pd
import numpy as np
titanic = pd.read_csv("../../data/titanic.csv")
titanic.head(2)
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C

筛选满足条件的行

本质:基于等长的 bool Series 筛选数据,True就把数据留下,否则跳过。

布尔Series生成方法:

1、关系表达式:titanic[“Age”] > 35,但是需注意:每个条件表达式外用(),用&|而不能用and not

2、isin()函数:titanic[“Pclass”].isin([2, 3])

3、notna()函数:titanic[titanic[“Age”].notna()]

4、Series map/apply函数

5、dataFrame apply 函数

tect = pd.Series([True, True] + [False] * (len(titanic) - 2))
titanic[tect]
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
titanic[titanic["Age"] > 35].head(2)
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
6701McCarthy, Mr. Timothy Jmale54.0001746351.8625E46S

df2 = pd.DataFrame({'a': ['one', 'one', 'two', 'three', 'two', 'one', 'six'],
                    'b': ['x', 'y', 'y', 'x', 'y', 'x', 'x'],
                    'c': np.random.randn(7)})
df2
abc
0onex1.785649
1oney0.867109
2twoy-0.752323
3threex-2.338581
4twoy0.799080
5onex0.396302
6sixx2.006012
# 如何选择a列中以 t 开头的行
criterion = df2["a"].map(lambda x: x.startswith("t"))
df2[criterion]
abc
2twoy-0.752323
3threex-2.338581
4twoy0.799080
df2[df2["a"].apply(lambda x: x.startswith("t"))]
abc
2twoy-0.752323
3threex-2.338581
4twoy0.799080
# 基于多个series多个列进行限制
df2[criterion & (df2['b'] == 'x')]
abc
3threex-2.338581
# 基于dataFrame row 对 多列进行限制
df2[df2.apply(lambda x: x[0] == "one" and x[1] != "y", axis=1)]
abc
0onex1.785649
5onex0.396302
df2.loc[criterion & (df2['b'] == 'y')]
abc
2twoy-0.752323
4twoy0.799080

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值