前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【一日一技】超简单的Pandas数据筛选方法

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

作者头像
青南
发布2019-04-25 14:45:39
1.4K0
发布2019-04-25 14:45:39
举报
文章被收录于专栏:未闻Code未闻Code

首先来定义一个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)

运行效果图

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

代码可以这样写:

df[160 < df['hight']]

运行效果图

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

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

报错图

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

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

运行效果图

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

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

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

df.query('hight>160')

运行效果图

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

df.query('160<hight<170')

运行效果图

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

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

运行效果图

作者:kingname

排版:magic

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档