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:
AB
014
156
232
389
Less than 5:
AB
0TrueTrue
1FalseFalse
2TrueTrue
3FalseFalse
Greater than 5:
AB
0FalseFalse
1FalseTrue
2FalseFalse
3TrueTrue
Less than or equal to 5:
AB
0TrueTrue
1TrueFalse
2TrueTrue
3FalseFalse
Greater than or equal to 5:
AB
0FalseFalse
1TrueTrue
2FalseFalse
3TrueTrue
Equal to 5:
AB
0FalseFalse
1TrueFalse
2FalseFalse
3FalseFalse
Not equal to 5:
AB
0TrueTrue
1FalseTrue
2TrueTrue
3TrueTrue

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:
AB
01040
12050
23060
Less than 25:
AB
0TrueFalse
1TrueFalse
2FalseFalse
Greater than 50:
AB
0FalseFalse
1FalseFalse
2FalseTrue
Equal to 30:
AB
0FalseFalse
1FalseFalse
2TrueFalse
Less than or equal to 30:
AB
0TrueFalse
1TrueFalse
2TrueFalse
Greater than or equal to 40:
AB
0FalseTrue
1FalseTrue
2FalseTrue
Not equal to 30:
AB
0TrueTrue
1TrueTrue
2FalseTrue

示例:两个 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:
A B
019
105
236
DataFrame 2:
A B
016
125
214
Equal :
A B
0TrueFalse
1FalseTrue
2FalseFalse
Not Equal:
A B
0FalseTrue
1TrueFalse
2TrueTrue
df1 Less than df2:
A B
0FalseFalse
1TrueFalse
2FalseFalse
df1 Greater than df2:
A B
0FalseTrue
1FalseFalse
2TrueTrue
df1 Less than or equal to df2:
AB
0TrueFalse
1TrueTrue
2FalseFalse
df1 Greater than or equal to df2:
AB
0TrueTrue
1FalseTrue
2TrueTrue
广告