如何使用 pandas series.fillna() 替换缺失值?
pandas series.fillna() 方法用于用指定值替换缺失值。此方法会替换整个 Series 对象中的 Nan 或 NA 值。
pandas fillna 的参数如下 −
值 − 它允许我们指定一个特定值来替换 Nan,默认情况下它为 None。
方法 − 用于填充重新索引 Series 中的缺失值。它接受以下任意值,例如 ‘backfill’、‘bfill’、‘pad’、‘ffill’ 和 None(默认值)。
Inplace − 此参数接受布尔值。如果接受 True,则修改将应用于原始序列对象本身;否则,将创建一个包含更新后的缺失值的新序列。默认值为 False。
Limit − 此参数接受整数值,用于指定您希望向前/向后填充多少个 NA 值。此参数的默认值为 None。
轴 − 接受 0 或索引标签。
向下转换 − 接受一个字典,该字典指定数据类型的向下转换。
这里我们将看到 series.fillna() 方法如何替换缺失值。
示例 1
在下面的示例中,我们将用整数值 10 替换缺失值。
# 导入 pandas 包
import pandas as pd
import numpy as np
# 创建一个系列
s = pd.Series([np.nan, np.nan, 89, 64, np.nan], index=["a","b","c","d","e"])
print(s)
# 将缺失值替换为 10
result = s.fillna(10)
print('Result:')
print(result)
解释
首先,我们创建了一个包含一些缺失值的 Pandas 系列对象。然后,我们调用了 fillna() 方法,并将值设置为 10。此处,默认参数保持不变。
输出
输出如下 −
a NaN b NaN c 89.0 d 64.0 e NaN dtype: float64 Result: a 10.0 b 10.0 c 89.0 d 64.0 e 10.0 dtype: float64
在上面的输出块中,我们可以看到整个系列对象中的所有 Nan 值都被值 10 很好地替换了。
示例 2
这次,我们将通过为方法参数指定 bfill 值来替换缺失的值。这样,我们无需指定任何特定值来填充缺失值,系统会使用 Nan 后面的值进行替换。
# 导入 pandas 包
import pandas as pd
import numpy as np
# 创建一个序列
s = pd.Series([np.nan, np.nan, 89, 64, np.nan], index=["a", "b", "c", "d", "e"])
print(s)
# 用 bfill 替换缺失值
result = s.fillna(method='bfill')
print('Result:')
print(result)
输出
输出如下所示 −
a NaN b NaN c 89.0 d 64.0 e NaN dtype: float64 Result: a 89.0 b 89.0 c 89.0 d 64.0 e NaN dtype: float64
在上面的输出块中,我们可以看到索引位置 a、b 处的 Nan 值被替换为值 89,这是因为我们在方法参数中指定了 bfill 值。索引位置 e 处的 Nan 值保持不变。

