如何使用 series.eq() 方法比较两个系列对象时处理空值?

pandasserver side programmingprogramming更新于 2025/5/21 15:22:17

Pandas series.eq() 方法用于将给定系列的每个元素与传递的参数(其他系列对象或标量值)进行比较。它将对每个与另一个系列对象(传递的系列对象)中的元素相等的元素返回 True。

eq() 方法的输出是一个具有布尔值的系列,它执行逐元素比较操作,该操作只不过是调用者系列 = 其他系列。在结果系列中,True 值表示其他系列对象中的等效值,False 值表示不相等的值。

通过提供 fill_value 参数,使用此 eq() 方法处理空值是一个非常简单的过程。默认情况下,此参数对缺失值采用 None。

示例 1

在下面的例子中,我们将看到 eq() 方法如何处理缺失值。

# 导入包
import pandas as pd
import numpy as np

# 创建系列
sr = pd.Series([np.nan, 76, 20, 51, np.nan, 26, 83, np.nan, 18])
print(sr)

# 比较标量值为 20 的元素,并将 NAN 值替换为 20
result = sr.eq(20, fill_value=20)
print(result)

解释

最初,我们使用以下列表创建了一个 pandas 系列整数和一些 Nan 值。之后,我们使用 eq() 方法将系列对象 sr 与值 20 进行比较,并将值 20 应用于 fill_value 参数()以处理缺失值。

输出

输出如下所示 −

0     NaN
1    76.0
2    20.0
3    51.0
4     NaN
5    26.0
6    83.0
7     NaN
8    18.0
dtype: float64

0     True
1    False
2     True
3    False
4     True
5    False
6    False
7     True
8    False
dtype: bool

首先,eq() 方法用指定的 fill_value 值 20 替换缺失值。之后,它将执行调用的系列对象与传入对象之间的比较操作。

示例 2

与上例相同,此处 eq() 方法将比较两个系列对象,并将缺失值替换为 fill_value 参数指定的值 5。

# 导入包
import pandas as pd
import numpy as np

# 创建系列
sr1 = pd.Series([26, np.nan, 18, np.nan, 94, 71, 5, np.nan, 68, 54, 88, 7, np.nan])
print(sr1)

sr2 = pd.Series([26, 29, np.nan, 11, 82, 93, np.nan, 7, 68, 29, 88,
87, np.nan])
print(sr2)

# 比较两个系列对象
result = sr1.eq(sr2, fill_value=5)
print(result)

输出

输出如下 −

0    26.0
1     NaN
2    18.0
3     NaN
4    94.0
5    71.0
6     5.0
7     NaN
8    68.0
9    54.0
10   88.0
11    7.0
12    NaN
dtype: float64

0    26.0
1    29.0
2     NaN
3    11.0
4    82.0
5    93.0
6     NaN
7     7.0
8    68.0
9    29.0
10   88.0
11   87.0
12    NaN
dtype: float64

0    True
1   False
2   False
3   False
4   False
5   False
6    True
7   False
8    True
9   False
10   True
11  False
12  False
dtype: bool

以上输出显示 eq() 方法返回一个包含布尔值的新系列对象。当两个系列对象中的值相等时,返回值 True。此外,我们可以看到 Null 值被替换为 5,并且使用 5 进行比较。


相关文章