问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Pandas数据筛选20种实用方法详解

创作时间:
作者:
@小白创作中心

Pandas数据筛选20种实用方法详解

引用
CSDN
1.
https://blog.csdn.net/qq_36807888/article/details/141310241

Pandas 提供了丰富的功能用于筛选数据,以下列举 20 种常用方法:
假设我们有一个名为 df 的 DataFrame,包含以下数据:

使用布尔索引

直接使用条件表达式筛选数据:

# 年龄大于 25 岁的
df[df['age'] > 25]  

2. 使用 isin 方法

筛选属于指定列表中的值:

# 城市为 'New York' 或 'London' 的
df[df['city'].isin(['New York', 'London'])]  

3. 使用 ~ 取反

筛选不满足条件的数据:

# 城市不是 'New York' 的
df[~df['city'].isin(['New York'])]  

4. 使用 query 方法

使用字符串表达式筛选数据:

# 年龄大于 25 岁且性别为男性的
df.query("age > 25 and gender == 'M'")  

5. 使用 loc 属性

根据标签筛选数据:

# 索引为 1 到 3 的行
df.loc[1:3]  

6. 使用 iloc 属性

根据位置筛选数据:

# 前 3 行
df.iloc[:3]  

7. 使用 head 方法

筛选前几行数据:

# 前 2 行
df.head(2)  

8. 使用 tail 方法

筛选后几行数据:

# 后 2 行
df.tail(2)  

9. 使用 sample 方法

随机筛选数据:

# 随机抽取 2 行
df.sample(2)  

10. 使用 nlargest 方法

筛选最大的 n 个值:

# 年龄最大的 2 个人
df.nlargest(2, 'age')  

11. 使用 nsmallest 方法

筛选最小的 n 个值:

# 年龄最小的 2 个人
df.nsmallest(2, 'age')  

12. 使用 between 方法

筛选在指定范围内的值:

# 年龄在 25 到 30 岁之间的
df[df['age'].between(25, 30)]

13. 使用 startswith 方法

筛选以指定字符串开头的值:

# 名字以 'A' 开头的
df[df['name'].str.startswith('A')]  

14. 使用 endswith 方法

筛选以指定字符串结尾的值:

# 城市以 'k' 结尾的
df[df['city'].str.endswith('k')]  

15. 使用 contains 方法

筛选包含指定字符串的值:

# 城市包含 'o' 的
df[df['city'].str.contains('o')]

16. 使用正则表达式

使用 str.match 方法筛选匹配正则表达式的值:

# 名字匹配正则表达式 '^B.*' 的
df[df['name'].str.match(r'^B.*')]

17. 使用 lambda 函数

使用 apply 方法应用自定义筛选逻辑:

# 筛选年龄为偶数的
df[df['age'].apply(lambda x: x % 2 == 0)]

18. 根据多列的值进行筛选

结合多个条件表达式:

# 年龄大于 25 岁且城市为 'New York' 的
df[(df['age'] > 25) & (df['city'] == 'New York')]

19. 根据索引和列名筛选

结合 loc 和条件表达式:

# 索引为 1 到 3,且年龄大于 25 的
df.loc[1:3, df['age'] > 25]

20. 根据索引和列位置筛选

结合 iloc 和条件表达式:

# 前 3 行,且第 2 列 (age) 大于 25 的
df.iloc[:3, df.columns.get_loc('age') > 25]

以上只是 Pandas 筛选数据的部分常用方法,你可以根据实际需求组合使用这些方法,或者探索更多高级用法。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号