pandas.Series.fillna#

Series.fillna(value, *, axis=None, inplace=False, limit=None)[source]#

value填充 NA/NaN 值。

参数:
valuescalar, dict, Series, or DataFrame

用于填充空值(例如 0)的值,或者是一个字典/Series/DataFrame,指定每个索引(对于 Series)或列(对于 DataFrame)要使用哪个值。字典/Series/DataFrame 中不存在的值将不会被填充。此值不能是列表。

axis{0 or ‘index’} for Series, {0 or ‘index’, 1 or ‘columns’} for DataFrame

沿哪个轴填充缺失值。对于 Series,此参数未使用,默认为 0。

inplacebool, default False

如果为 True,则就地填充。注意:这将修改对此对象进行的任何其他视图(例如,DataFrame 列的无副本切片)。

limitint, default None

这是沿整个轴填充 NaN 的最大条目数。如果不是 None,则必须大于 0。

返回:
Series/DataFrame

填充了缺失值后的对象。

另请参阅

ffill

通过传播最后一个有效观测值到下一个有效值来填充值。

bfill

通过使用下一个有效观测值来填充空隙。

interpolate

使用插值填充 NaN 值。

reindex

使对象符合新索引。

asfreq

将时间序列转换为指定频率。

注意

对于非 object 数据类型,value=None 将使用该数据类型的 NA 值。有关更多详细信息,请参阅 填充缺失数据 部分。

示例

>>> df = pd.DataFrame(
...     [
...         [np.nan, 2, np.nan, 0],
...         [3, 4, np.nan, 1],
...         [np.nan, np.nan, np.nan, np.nan],
...         [np.nan, 3, np.nan, 4],
...     ],
...     columns=list("ABCD"),
... )
>>> df
     A    B   C    D
0  NaN  2.0 NaN  0.0
1  3.0  4.0 NaN  1.0
2  NaN  NaN NaN  NaN
3  NaN  3.0 NaN  4.0

将所有 NaN 元素替换为 0。

>>> df.fillna(0)
     A    B    C    D
0  0.0  2.0  0.0  0.0
1  3.0  4.0  0.0  1.0
2  0.0  0.0  0.0  0.0
3  0.0  3.0  0.0  4.0

分别用 0、1、2 和 3 替换列 'A'、'B'、'C' 和 'D' 中的所有 NaN 元素。

>>> values = {"A": 0, "B": 1, "C": 2, "D": 3}
>>> df.fillna(value=values)
     A    B    C    D
0  0.0  2.0  2.0  0.0
1  3.0  4.0  2.0  1.0
2  0.0  1.0  2.0  3.0
3  0.0  3.0  2.0  4.0

仅替换第一个 NaN 元素。

>>> df.fillna(value=values, limit=1)
     A    B    C    D
0  0.0  2.0  2.0  0.0
1  3.0  4.0  NaN  1.0
2  NaN  1.0  NaN  3.0
3  NaN  3.0  NaN  4.0

使用 DataFrame 填充时,替换沿相同的列名和相同的索引进行。

>>> df2 = pd.DataFrame(np.zeros((4, 4)), columns=list("ABCE"))
>>> df.fillna(df2)
     A    B    C    D
0  0.0  2.0  0.0  0.0
1  3.0  4.0  0.0  1.0
2  0.0  0.0  0.0  NaN
3  0.0  3.0  0.0  4.0

请注意,由于列 D 不在 df2 中,因此未受影响。