Python Pandas - 二元比较运算
Pandas 中的二元比较运算用于比较 Pandas 数据结构(例如 Series 或 DataFrame 对象)中的元素与标量值或其他数据结构。这些运算返回布尔结果,指示每个比较的结果,这些运算对于过滤、基于条件的运算和数据分析非常有用。
在本教程中,您将学习如何在 Pandas 数据结构上对标量值和其他 DataFrame/Series 对象执行小于、大于、等于等二元比较运算。
Pandas 中的二元比较运算符
二元比较运算符用于比较 Pandas Series 或 DataFrame 中的元素与标量值。这些运算的结果是一个布尔数据结构,其中 True 表示满足给定条件,False 表示不满足。
以下是可用于 Pandas DataFrame 或 Series 的常用二元比较运算符列表:
<:检查每个元素是否小于给定值。
>:检查每个元素是否大于给定值。
<=:检查每个元素是否小于或等于给定值。
>=:检查每个元素是否大于或等于给定值。
==:检查每个元素是否等于给定值。
!=:检查每个元素是否不等于给定值。
示例
以下示例演示如何将比较运算符应用于带有标量值的 Pandas DataFrame。
import pandas as pd
# Create a sample DataFrame
data = {'A': [1, 5, 3, 8], 'B': [4, 6, 2, 9]}
df = pd.DataFrame(data)
# Display the input DataFrame
print("Input DataFrame:\n", df)
# Perform binary comparison operations
print("\nLess than 5:\n", df < 5)
print("\nGreater than 5:\n", df > 5)
print("\nLess than or equal to 5:\n", df <= 5)
print("\nGreater than or equal to 5:\n", df >= 5)
print("\nEqual to 5:\n", df == 5)
print("\nNot equal to 5:\n", df != 5)
以下是上述代码的输出:
Input DataFrame:
Less than 5:
| A | B |
0 | True | True |
1 | False | False |
2 | True | True |
3 | False | False |
Greater than 5:
| A | B |
0 | False | False |
1 | False | True |
2 | False | False |
3 | True | True |
Less than or equal to 5:
| A | B |
0 | True | True |
1 | True | False |
2 | True | True |
3 | False | False |
Greater than or equal to 5:
| A | B |
0 | False | False |
1 | True | True |
2 | False | False |
3 | True | True |
Equal to 5:
| A | B |
0 | False | False |
1 | True | False |
2 | False | False |
3 | False | False |
Not equal to 5:
| A | B |
0 | True | True |
1 | False | True |
2 | True | True |
3 | True | True |
Pandas 中的二元比较函数
除了上述运算符外,Pandas 还提供各种函数来对 Pandas 数据结构执行二元比较运算,并提供其他自定义选项,例如选择轴和为多级索引对象指定级别。
以下是 Pandas 中二元比较函数的列表:
序号 |
函数 |
描述 |
1 |
lt(other[, axis, level]) |
逐元素小于比较。 |
2 |
gt(other[, axis, level]) |
逐元素大于比较。 |
3 |
le(other[, axis, level]) |
逐元素小于或等于比较。 |
4 |
ge(other[, axis, level]) |
逐元素大于或等于比较。 |
5 |
ne(other[, axis, level]) |
逐元素不相等比较。 |
6 |
eq(other[, axis, level]) |
逐元素相等比较。 |
示例:Pandas Series 上的二元比较运算
此示例演示了 Pandas Series 和标量值之间应用二元比较函数。
import pandas as pd
# Create a Pandas Series
s = pd.Series([10, 20, 30, 40, 50])
# Display the Series
print("Pandas Series:\n", s)
# Perform comparison operations
print("\nLess than 25:\n", s.lt(25))
print("\nGreater than 25:\n", s.gt(25))
print("\nLess than or equal to 30:\n", s.le(30))
print("\nGreater than or equal to 40:\n", s.ge(40))
print("\nNot equal to 30:\n", s.ne(30))
print("\nEqual to 50:\n", s.eq(50))
以下是上述代码的输出:
Pandas Series:
0 10
1 20
2 30
3 40
4 50
dtype: int64
Less than 25:
0 True
1 True
2 False
3 False
4 False
dtype: bool
Greater than 25:
0 False
1 False
2 True
3 True
4 True
dtype: bool
Less than or equal to 30:
0 True
1 True
2 True
3 False
4 False
dtype: bool
Greater than or equal to 40:
0 False
1 False
2 False
3 True
4 True
dtype: bool
Not equal to 30:
0 True
1 True
2 False
3 True
4 True
dtype: bool
Equal to 50:
0 False
1 False
2 False
3 False
4 True
dtype: bool
示例:Pandas DataFrame 上的二元比较运算
与上述示例类似,这将使用 Pandas 中的二元比较函数在 DataFrame 和标量值之间执行二元比较运算。
import pandas as pd
# Create a DataFrame
data = {'A': [10, 20, 30], 'B': [40, 50, 60]}
df = pd.DataFrame(data)
# Display the DataFrame
print("DataFrame:\n", df)
# Perform comparison operations
print("\nLess than 25:\n", df.lt(25))
print("\nGreater than 50:\n", df.gt(50))
print("\nEqual to 30:\n", df.eq(30))
print("\nLess than or equal to 30:\n", df.le(30))
print("\nGreater than or equal to 40:\n", df.ge(40))
print("\nNot equal to 30:\n", df.ne(30))
以下是上述代码的输出:
DataFrame:
Less than 25:
| A | B |
0 | True | False |
1 | True | False |
2 | False | False |
Greater than 50:
| A | B |
0 | False | False |
1 | False | False |
2 | False | True |
Equal to 30:
| A | B |
0 | False | False |
1 | False | False |
2 | True | False |
Less than or equal to 30:
| A | B |
0 | True | False |
1 | True | False |
2 | True | False |
Greater than or equal to 40:
| A | B |
0 | False | True |
1 | False | True |
2 | False | True |
Not equal to 30:
| A | B |
0 | True | True |
1 | True | True |
2 | False | True |
示例:两个 Pandas 数据结构之间的二元比较
此示例使用 eq()、ne()、lt()、gt()、le() 和 gt() 函数逐元素比较两个 DataFrame。
import pandas as pd
# Create two DataFrames
df1 = pd.DataFrame({'A': [1, 0, 3], 'B': [9, 5, 6]})
df2 = pd.DataFrame({'A': [1, 2, 1], 'B': [6, 5, 4]})
# Display the Input DataFrames
print("DataFrame 1:\n", df1)
print("\nDataFrame 2:\n", df2)
# Perform comparison operations between two DataFrames
print("\nEqual :\n", df1.eq(df2))
print("\nNot Equal:\n", df1.ne(df2))
print("\ndf1 Less than df2:\n", df1.lt(df2))
print("\ndf1 Greater than df2:\n", df1.gt(df2))
print("\ndf1 Less than or equal to df2:\n", df1.le(df2))
print("\ndf1 Greater than or equal to df2:\n", df1.ge(df2))
以下是上述代码的输出:
DataFrame 1:
DataFrame 2:
Equal :
|
A |
B |
0 | True | False |
1 | False | True |
2 | False | False |
Not Equal:
|
A |
B |
0 | False | True |
1 | True | False |
2 | True | True |
df1 Less than df2:
|
A |
B |
0 | False | False |
1 | True | False |
2 | False | False |
df1 Greater than df2:
|
A |
B |
0 | False | True |
1 | False | False |
2 | True | True |
df1 Less than or equal to df2:
| A | B |
0 | True | False |
1 | True | True |
2 | False | False |
df1 Greater than or equal to df2:
| A | B |
0 | True | True |
1 | False | True |
2 | True | True |