Pandas 布尔索引的逻辑操作
在本文中,我们将介绍 Pandas 中用于布尔索引的逻辑运算符。布尔索引是指使用一个布尔数组来过滤 DataFrame 中的数据,其中 True 值对应的行将被保留,False 对应的行将被删除。逻辑运算符可用于创建复杂的布尔索引,以满足更复杂的数据分析需求。
阅读更多:Pandas 教程
概述
Pandas 中常用的逻辑运算符包括 AND(&)、OR(|)和 NOT(~)。这些逻辑运算符用于组合两个或多个布尔数组,产生新的布尔数组。在使用这些逻辑运算符时,需要注意数据类型的一致性。比如,如果两个 DataFrame 使用 & 进行逻辑操作,那么它们必须有相同形状和相同的列名。
在使用逻辑运算符对布尔数组进行操作时,也可以使用括号来指定优先级,从而保证正确的运算顺序。括号内的操作先执行,然后是 NOT,接下来是 AND,最后是 OR。
下面我们将分别介绍 AND、OR 和 NOT 运算符在 Pandas 中的用法及示例。
AND 操作符
AND 操作符用于组合两个或多个布尔数组,只有在所有的布尔数组都为 True 时,结果才会为 True。
Pandas 中使用 & 符号表示 AND 操作符。下面是一个 AND 操作符的例子:
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'age': [21, 18, 25, 19, 22],
'gender': ['F', 'M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)
# 筛选出 gender 为 'F' 且 age 大于等于 21 的行
df_filtered = df[(df['gender'] == 'F') & (df['age'] >= 21)]
print(df_filtered)
运行结果为:
name age gender
0 Alice 21 F
4 Emily 22 F
OR 操作符
OR 操作符用于组合两个或多个布尔数组,只要有一个布尔数组为 True,结果就为 True。
Pandas 中使用 | 符号表示 OR 操作符。下面是一个 OR 操作符的例子:
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'age': [21, 18, 25, 19, 22],
'gender': ['F', 'M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)
# 筛选出 gender 为 'F' 或 age 大于等于 21 的行
df_filtered = df[(df['gender'] == 'F') | (df['age'] >= 21)]
print(df_filtered)
运行结果为:
name age gender
0 Alice 21 F
2 Charlie 25 M
4 Emily 22 F
NOT 操作符
NOT 操作符用于对一个布尔数组取反。
Pandas 中使用 ~ 符号表示 NOT 操作符。下面是一个 NOT 操作符的例子:
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily'],
'age': [21, 18, 25, 19, 22],
'gender': ['F', 'M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)
# 筛选出 gender 不为 'F' 的行
df_filtered = df[~(df['gender'] == 'F')]
print(df_filtered)
运行结果为:
“`python
name age gender
1 Bob 18 M
2 Charlie 25 M
3 David 19 M