📜  Pandas 布尔索引(1)

📅  最后修改于: 2023-12-03 14:45:03.887000             🧑  作者: Mango

Pandas 布尔索引

Pandas 布尔索引是一种用于从数据集中选择特定行或列的方法。它基于布尔运算符 (&, |, ~) 对数据集中的每个元素进行比较,并返回一个由 TrueFalse 组成的布尔数组,此布尔数组可用于选择数据。

布尔索引的使用

要使用 Pandas 布尔索引,我们需要定义一个布尔数组,并在原始数据集上进行索引。例如:

import pandas as pd

data = pd.read_csv('data.csv')
bool_arr = [True, False, True, False, True]
result = data[bool_arr]

在上面的示例中,我们创建了一个布尔数组 bool_arr,其中包含了一组 TrueFalse 布尔值。我们然后在 data 数据集中使用布尔数组作为索引,如下所示:

result = data[bool_arr]

在这种情况下,我们将返回 data 数据集中第1,3和5行,因为这些行对应的布尔值为 True

我们还可以使用比较运算符 (<, <=, >, >=, ==, !=) 生成布尔数组,如下所示:

import pandas as pd

data = pd.read_csv('data.csv')
bool_arr = data['column_name'] > 10
result = data[bool_arr]

在上面的示例中,我们将比较 data 数据集中 column_name 列的每个元素是否大于 10。这将生成一个布尔数组 bool_arr,其中含有 TrueFalse 布尔值。我们然后在 data 数据集中使用布尔数组作为索引,如下所示:

result = data[bool_arr]

在这种情况下,我们将返回 data 数据集中符合条件的所有行。

布尔运算符

Pandas 中有三个布尔运算符:&|~。这些运算符用于将两个或多个布尔数组组合成一个新的布尔数组。

“与(&)”运算符

“与”运算符 (&) 对两个布尔数组执行逐位比较,并返回一个新的布尔数组,其中包含两个数组中相应元素的逻辑“与”(AND)结果。

例如,我们可以使用以下代码演示 “与” 运算符:

import pandas as pd

data = pd.read_csv('data.csv')
bool_arr1 = data['column1'] > 10
bool_arr2 = data['column2'] < 20
result = data[bool_arr1 & bool_arr2]

在上面的示例中,我们使用“与”运算符 (&) 组合了两个布尔数组 bool_arr1bool_arr2,并在 data 数据集中使用结果作为索引。在这种情况下,我们将返回 data 数据集中满足两个条件的所有行。

“或(|)”运算符

“或”运算符 (|) 对两个布尔数组执行逐位比较,并返回一个新的布尔数组,其中包含两个数组中相应元素的逻辑“或”(OR)结果。

例如,我们可以使用以下代码演示 “或” 运算符:

import pandas as pd

data = pd.read_csv('data.csv')
bool_arr1 = data['column1'] > 10
bool_arr2 = data['column2'] < 20
result = data[bool_arr1 | bool_arr2]

在上面的示例中,我们使用“或”运算符 (|) 组合了两个布尔数组 bool_arr1bool_arr2,并在 data 数据集中使用结果作为索引。在这种情况下,我们将返回 data 数据集中满足任意一个条件的所有行。

“非(~)”运算符

“非”运算符 (~) 对布尔数组执行逐位比较,并返回一个新的布尔数组,其中每个元素都取反。也就是说,当原始数组元素为 True 时,返回数组中对应元素为 False;当原始数组元素为 False 时,返回数组中对应元素为 True

例如,我们可以使用以下代码演示 “非” 运算符:

import pandas as pd

data = pd.read_csv('data.csv')
bool_arr1 = data['column1'] > 10
result = data[~bool_arr1]

在上面的示例中,我们使用“非”运算符 (~) 对布尔数组 bool_arr1 中的元素逐位取反,并在 data 数据集中使用结果作为索引。在这种情况下,我们将返回 data 数据集中不满足条件的所有行。