dask.dataframe.DataFrame.fillna

dask.dataframe.DataFrame.fillna

DataFrame.fillna(value=None, method=None, limit=None, axis=None)

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

此文档字符串是从 pandas.core.frame.DataFrame.fillna 复制而来的。

Dask 版本可能存在一些不一致性。

参数
标量, 字典, 序列, 或数据框

用于填补空洞的值(例如 0),或者是一个字典/系列/数据框,指定每个索引(对于系列)或列(对于数据框)使用的值。不在字典/系列/数据框中的值将不会被填补。此值不能是列表。

方法{‘backfill’, ‘bfill’, ‘ffill’, None}, 默认 None

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

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

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

2.1.0 版后已移除: 请使用 ffill 或 bfill 代替。

{0 或 ‘index’} 用于 Series,{0 或 ‘index’, 1 或 ‘columns’} 用于 DataFrame

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

就地bool, 默认 False (Dask 中不支持)

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

限制int, 默认 None

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

向下转换dict, 默认是 None (Dask 中不支持)

一个字典,键为项目,值为要向下转换的数据类型,或者字符串 ‘infer’,表示尝试向下转换为适当的等价类型(例如,如果可能的话,将 float64 转换为 int64)。

2.2.0 版后已移除.

返回
Series/DataFrame 或 None

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

参见

ffill

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

bfill

使用下一个有效观测值来填补空缺。

interpolate

使用插值填充 NaN 值。

reindex

使对象符合新索引。

asfreq

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

示例

>>> 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 中不存在。