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。
参见
示例
>>> 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 中不存在。