如何使用 pandas series.fillna() 替换缺失值?

pandasserver side programmingprogramming更新于 2025/7/10 23:52:17

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 值保持不变。


相关文章