maxframe.dataframe.DataFrame.fillna#

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)#

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

参数:
  • value (scalar, dict, Series, or DataFrame) -- 用于填充缺失值的值(例如 0),也可以是 dict/Series/DataFrame,用于指定每个索引(对于 Series)或列(对于 DataFrame)使用的值。不在 dict/Series/DataFrame 中的值将不会被填充。此值不能是列表。

  • method ({'backfill', 'bfill', 'pad', 'ffill', None}, default None) -- 用于填充重索引 Series 中缺失值的方法 pad / ffill:将上一个有效观测值向前传播到下一个有效值 backfill / bfill:使用下一个有效观测值填充缺失值。

  • axis ({0 or 'index', 1 or 'columns'}) -- 用于填充缺失值的轴。

  • inplace (bool, default False) -- 如果为 True,则就地填充。注意:这将修改该对象的其他视图(例如,DataFrame 中某一列的无复制切片)。

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

  • downcast (dict, default is None) -- 一个 item->dtype 的字典,用于指定可能时进行向下类型转换的内容,或者字符串 'infer',它将尝试向下类型转换为合适的等效类型(例如,如果可能则将 float64 转换为 int64)。

返回:

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

返回类型:

DataFrame or None

参见

interpolate

使用插值填充 NaN 值。

reindex

使对象符合新的索引。

asfreq

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

示例

>>> import maxframe.tensor as mt
>>> import maxframe.dataframe as md
>>> df = md.DataFrame([[np.nan, 2, np.nan, 0],
                       [3, 4, np.nan, 1],
                       [np.nan, np.nan, np.nan, 5],
                       [np.nan, 3, np.nan, 4]],
                      columns=list('ABCD'))
>>> df.execute()
     A    B   C  D
0  NaN  2.0 NaN  0
1  3.0  4.0 NaN  1
2  NaN  NaN NaN  5
3  NaN  3.0 NaN  4

将所有 NaN 元素替换为 0。

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

我们也可以将非空值向前或向后传播。

>>> df.fillna(method='ffill').execute()
    A   B   C   D
0   NaN 2.0 NaN 0
1   3.0 4.0 NaN 1
2   3.0 4.0 NaN 5
3   3.0 3.0 NaN 4

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

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