类似SQL的多条件查询,pandas也能轻松应对

该号刚出生不久,喜欢的朋友别忘了点个关注。

熟悉SQL的朋友们应该知道,在查询数据时,条件是放在where子句里的。pandas作为Python强大的数据分析库,虽然也有where这个方法,但其用法上和SQL里的不太一样。而平时我们在做条件查询的时候,通常用到的也并不是where,而是布尔索引。

为什么会有这么个叫法呢?

因为布尔索引利用的是布尔逻辑运算符进行检索项的逻辑组配,说白了就是你先给定若干个条件,然后找出这若干个条件组合后(或/且)逻辑值为真的集合,故而叫做布尔索引。

我们直接来看看例子:

先创建一个DataFrame:

可以看到数据里头有6个记录,代表的是6个人的一些基本情况。现在我要查找出所有男性的信息,逻辑上既是:如果Gender等于M,则取出来。用代码实现如下:

很多时候,DataFrame的列也可以当做其属性来用,那么上面的代码也可以这样写:

同样的,我要查找身高大于170的,可以如下:

上面都是单个条件的查找。如果我对查找需要设置多个条件呢,比如我要查找性别为男,且年龄大于等于18岁的呢?

那我们就设置两个条件,条件与条件之间,用我们需要的符号来表达逻辑关系(即或还是且?)

如上,条件与条件之间用&符号表示且的关系,每个条件用括号括起来,以免出现逻辑混乱的情况。需要指出的是,布尔索引的时候,&符号不能用and代替。同样下面的逻辑或关系中,|符号不能用or代替。

谈到了逻辑且的关系,那么再来看看逻辑或的关系。现在我要查找出身高170以上,或爱好为音乐的人,可以这样写:

虽然SQL的条件查询在语法上更像自然语言(select 字段 from 表格 where 条件1 and/or 条件2 and/or 条件3……),让人理解起来更容易理解。但是个人觉得,pandas的布尔索引,只要多写几遍之后,也是非常容易理解的,可读性也非常强,执行速度飞快,还是很有必要掌握的一个知识点。

好了,今天的分享就到这了,喜欢的同学不要忘了点个赞。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181121A099GY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券