布尔索引是pandas中非常常用的一种用来过滤数据的操作方法。布尔操作符与、或、非的对应关系为:

下面我们通过实例演示一下布尔索引的基本用法。

本文所使用的开发环境:Windows 7 python 2.7.17 PyCharm Community Edition 2016.1.5

pandas如何设定指定索引(pandas的布尔索引用法介绍)(1)

程序所使用的演示数据如下所示:

pandas如何设定指定索引(pandas的布尔索引用法介绍)(2)

程序的第27行,我们是使用布尔索引选取所有贷款余额大于0的行。由于条件比较简单,我们直接使用python的比较运算符即可。

pandas如何设定指定索引(pandas的布尔索引用法介绍)(3)

程序的执行结果如下所示:

pandas如何设定指定索引(pandas的布尔索引用法介绍)(4)

与原始数据对比我们可以看出,本次筛选我们只选取了贷款余额(万)列大于0的数据。

如果筛选条件不止一个,我们也可以使用逻辑运算符。逻辑“与”使用运算符 & 实现。程序的第30行,我们把筛选条件变更为贷款余额大于0元,并且发放金额大于1850万元。

pandas如何设定指定索引(pandas的布尔索引用法介绍)(5)

在这里我们要注意,由于运算符优先级的问题,为了保证条件被正确计算,我们要给两个条件都分别加上圆括号。

pandas如何设定指定索引(pandas的布尔索引用法介绍)(6)

和上面的数据对比,发放金额大于1850的数据也被筛选掉了。

下面我们看一下逻辑“或”的用法,逻辑“或”使用的是运算符 | 来实现。程序的第33行,我们选取了贷款余额大于1300万,或者发放金额大于1850万的数据。

pandas如何设定指定索引(pandas的布尔索引用法介绍)(7)

通过程序的执行结果,我们可以看出,只要是符合这两个条件中任意一个的数据行,就会被筛选出来。红线代表满足条件的数值列。

pandas如何设定指定索引(pandas的布尔索引用法介绍)(8)

逻辑“非”使用的运算符是 ~ 它在键盘的左上角,Esc键的下方。使用逻辑“非”的时候,也要注意运算符的优先级。程序的第36行,我们选取的是贷款余额“不是”大于0的数据,换句话说选取的是贷款余额小于等于0的数据。

pandas如何设定指定索引(pandas的布尔索引用法介绍)(9)

由于贷款余额没有小于0的数据,所以筛选出的是贷款余额等于0的数据,程序的执行结果如下:

pandas如何设定指定索引(pandas的布尔索引用法介绍)(10)

我们还可以使用map函数,构造一些更复杂的条件,程序的第39行,我们演示使用find函数筛选出“是否结清”列中包含“已”字的数据。

pandas如何设定指定索引(pandas的布尔索引用法介绍)(11)

在lambda函数中参数x代表“是否结清”列中的每行数据。find函数用于查找数据中的“已”字。如果返回值不是-1,代表查找到了。map函数返回值为“True”的时候,布尔索引将把数据展示出来。为了方便阅读源代码,我们还可以把条件独立出来变成一个变量,例如:criterion1。程序的执行结果如下:

pandas如何设定指定索引(pandas的布尔索引用法介绍)(12)

之前的所有例子,我们都是选取DataFrame的所有列。最后我们再结合之前的条件演示一下,如何选取特定的列。程序的第43行,我们在复用criterion1的前提下,要求只选取客户名称, 发放金额(万), 是否结清,这三列。

pandas如何设定指定索引(pandas的布尔索引用法介绍)(13)

程序的执行结果如下:

pandas如何设定指定索引(pandas的布尔索引用法介绍)(14)

以上就是关于布尔索引的介绍,如果大家认为我的文章对您能有帮助,真心希望您能点一下“关注”,也算是对我努力工作的一个支持,谢谢大家了。

,