pandas.DataFrame.fillna #

数据框。fillna ( value = None , * , method = None , axis = None , inplace = False , limit = None , downcast = _NoDefault.no_default ) [来源] #

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

参数
标量、字典、系列或数据帧

用于填充漏洞的值(例如 0),或者是值的字典/系列/数据帧,指定每个索引(对于系列)或列(对于数据帧)使用哪个值。不在 dict/Series/DataFrame 中的值将不会被填充。该值不能是列表。

方法{'backfill', 'bfill', 'ffill', None}, 默认 None

用于填充重新索引系列中的孔的方法:

  • ffill:将最后一个有效观察向前传播到下一个有效观察。

  • backfill / bfill:使用下一个有效观察来填补空白。

自版本 2.1.0 起已弃用:使用 ffill 或 bfill 代替。

{0 或 'index'} 对于 Series,{0 或 'index', 1 或 'columns'} 对于 DataFrame

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

inplace布尔值,默认 False

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

limit int,默认无

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

downcast dict,默认为 None

如果可能的话,要向下转换的 item->dtype 的字典,或者字符串“infer”,它将尝试向下转换为适当的相等类型(例如,如果可能,将 float64 转换为 int64)。

自 2.2.0 版本起已弃用。

返回
系列/数据框或无

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

也可以看看

ffill

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

bfill

通过使用下一个有效观察来填补空白来填充值。

interpolate

使用插值填充 NaN 值。

reindex

使对象符合新索引。

asfreq

将 TimeSeries 转换为指定频率。

例子

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

将“A”、“B”、“C”和“D”列中的所有 NaN 元素分别替换为 0、1、2 和 3。

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