pandas.Series.fillna#

Series.fillna(value=None, *, method=None, axis=None, inplace=False, limit=None, downcast=_NoDefault.no_default)[源代码]#

使用指定的方法填充NA/NaN值。

Parameters:
value标量、字典、Series 或 DataFrame

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

<strong>method</strong>{‘backfill’, ‘bfill’, ‘ffill’, None},默认为 None

用于填充重新索引 Series 中间隙的方法:

  • ffill:将最后一次有效观测值向前传播到下一次有效观测值。

  • backfill / bfill:使用下一次有效观测值填充间隙。

自 2.1.0 版本弃用: 请改用 ffill 或 bfill。

axisSeries 为 {0 或 ‘index’},DataFrame 为 {0 或 ‘index’, 1 或 ‘columns’}

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

inplacebool,默认 False

如果为 True,则就地填充。注意:这将修改该对象的任何其他视图(例如 DataFrame 中列的无复制切片)。

<strong>limit</strong>int,默认 None

如果指定了 method,则这是向前/向后填充的连续 NaN 值的最大数量。换句话说,如果存在超过此数量连续 NaN 的间隙,则只会部分填充。如果未指定 method,则这是在整个轴上填充 NaN 的条目的最大数量。如果不是 None,则必须大于 0。

downcastdict,默认为 None

一个 {项目->dtype} 的字典,用于在可能的情况下向下转换,或者字符串 ‘infer’,它将尝试向下转换为合适的等效类型(例如,如果可能,float64 转换为 int64)。

自 2.2.0 版本弃用.

Returns:
Series/DataFrame 或 None

已填充缺失值的对象,如果 inplace=True 则为 None。

参见

ffill

通过将最后一次有效观测值向前传播到下一次有效观测值来填充值。

bfill

使用下一次有效观测值填充间隙来填充值。

interpolate

使用插值填充 NaN 值。

reindex

使用新的索引重构对象。

asfreq

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

Examples

>>> 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 中。