【一日一技】超简单的Pandas数据筛选方法

首先来定义一个DataFrame

import pandas as pd

datas = [

{'name': '王小一', 'hight': 171, 'weight': 100},

{'name': '李小二', 'hight': 163, 'weight': 200},

{'name': '张小三', 'hight': 152, 'weight': 67},

{'name': '郭小四', 'hight': 148, 'weight': 77},

{'name': '钱小五', 'hight': 189, 'weight': 87},

{'name': '孙小六', 'hight': 155, 'weight': 82},

{'name': '周小七', 'hight': 169, 'weight': 74},

{'name': '吴小八', 'hight': 170, 'weight': 68},

{'name': '郑小九', 'hight': 173, 'weight': 65},

{'name': '冯老十', 'hight': 175, 'weight': 64}

]

df = pd.DataFrame(datas)

【一日一技】超简单的Pandas数据筛选方法_第1张图片

运行效果图

现在想要筛选hight字段大于160的所有数据

代码可以这样写:

df[160 < df['hight']]

【一日一技】超简单的Pandas数据筛选方法_第2张图片

运行效果图

现在想筛选所有 160 < hight < 170的数据

如果使用Python的链式比对,就会导致报错:

【一日一技】超简单的Pandas数据筛选方法_第3张图片报错图

此时,代码需要改写为很难看的一种样式:

df[(160 < df['hight']) & (df['hight'] < 170)]

【一日一技】超简单的Pandas数据筛选方法_第4张图片

运行效果图

这样写虽然能够解决问题,但是代码可读性不好。

为了提高可读性,可以使用pandas自带的.query方法

当我们要查询hight > 160的数据时,可以这样写:

df.query('hight>160')

【一日一技】超简单的Pandas数据筛选方法_第5张图片

运行效果图

当我们要查询160 < hight < 170的时候,可以这样写:

df.query('160)

【一日一技】超简单的Pandas数据筛选方法_第6张图片

运行效果图

甚至还支持多个参数链式查询,例如筛选所有160并且weight<80的数据:

df.query('160).query('weight<80')

【一日一技】超简单的Pandas数据筛选方法_第7张图片

运行效果图

作者:kingname

排版:magic

大家好,我是老表
觉得本文不错的话,转发、留言、点赞,是对我最大的支持。

每日留言

说说你读完本文感受?

或者一句激励自己的话?

(字数不少于15字)

怎么加入习队

点我,看文末彩蛋

留言有啥福利

点我就知道了

想进学习交流

微信jjxksa888

:简说Python

2小时快速掌握Python基础知识要点

完整Python基础知识要点

Python小知识 | 这些技能你不会?(一)

Python小知识 | 这些技能你不会?(二)

Python小知识 | 这些技能你不会?(三)

Python小知识 | 这些技能你不会?(四)

近期推荐阅读:

【1】整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了

【2】【终篇】Pandas中文官方文档:基础用法6(含1-5)

觉得不错就点一下“在看”吧 

你可能感兴趣的:(【一日一技】超简单的Pandas数据筛选方法)