该号刚出生不久,喜欢的朋友别忘了点个关注。
熟悉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的布尔索引,只要多写几遍之后,也是非常容易理解的,可读性也非常强,执行速度飞快,还是很有必要掌握的一个知识点。
好了,今天的分享就到这了,喜欢的同学不要忘了点个赞。
领取专属 10元无门槛券
私享最新 技术干货