pandas.core.groupby.DataFrameGroupBy.fillna#
- DataFrameGroupBy.fillna(value=None, method=None, axis=_NoDefault.no_default, inplace=False, limit=None, downcast=_NoDefault.no_default)[源代码]#
使用指定方法在组内填充 NA/NaN 值。
自 2.2.0 版本弃用: 此方法已弃用,将在未来版本中删除。请使用
DataFrameGroupBy.ffill()或DataFrameGroupBy.bfill()进行前向或后向填充。如果要用单个值填充,请使用DataFrame.fillna()。- Parameters:
- value标量、字典、Series 或 DataFrame
用于填充空缺的值(例如 0),或者是一个字典/Series/DataFrame,其中包含为每个索引(对于 Series)或列(对于 DataFrame)指定要使用的值。字典/Series/DataFrame 中不存在的值将不会被填充。此值不能是列表。希望使用
value参数而不是method的用户应优先使用DataFrame.fillna(),因为这将产生相同的结果并且性能更好。- <strong>method</strong>{{‘bfill’, ‘ffill’, None}}, 默认为 None
用于填充空缺的方法。
'ffill'将在组内将最后一个有效观测值向前传播。'bfill'将使用下一个有效观测值来填充间隙。- axis{0 或 ‘index’, 1 或 ‘columns’}
沿哪个轴进行填充缺失值。当
DataFrameGroupBy的axis参数为0时,在这里使用axis=1将产生与DataFrame.fillna()相同的结果。当DataFrameGroupBy的axis参数为1时,在这里使用axis=0或axis=1将产生相同的结果。- inplacebool,默认 False
损坏。请勿设置为 True。
- <strong>limit</strong>int,默认 None
如果指定了 method,这是在组内向前/向后填充连续 NaN 值的最大数量。换句话说,如果间隙包含多于此数量的连续 NaN,则只会部分填充。如果未指定 method,这是沿整个轴填充 NaN 的连续条目的最大数量。如果为 None,则必须大于 0。
- downcastdict,默认为 None
一个 {项目->dtype} 的字典,用于在可能的情况下向下转换,或者字符串 ‘infer’,它将尝试向下转换为合适的等效类型(例如,如果可能,float64 转换为 int64)。
- Returns:
- DataFrame
填充了缺失值。
Examples
>>> df = pd.DataFrame( ... { ... "key": [0, 0, 1, 1, 1], ... "A": [np.nan, 2, np.nan, 3, np.nan], ... "B": [2, 3, np.nan, np.nan, np.nan], ... "C": [np.nan, np.nan, 2, np.nan, np.nan], ... } ... ) >>> df key A B C 0 0 NaN 2.0 NaN 1 0 2.0 3.0 NaN 2 1 NaN NaN 2.0 3 1 3.0 NaN NaN 4 1 NaN NaN NaN
在列上沿每个组向前或向后传播非空值。
>>> df.groupby("key").fillna(method="ffill") A B C 0 NaN 2.0 NaN 1 2.0 3.0 NaN 2 NaN NaN 2.0 3 3.0 NaN 2.0 4 3.0 NaN 2.0
>>> df.groupby("key").fillna(method="bfill") A B C 0 2.0 2.0 NaN 1 2.0 3.0 NaN 2 3.0 NaN 2.0 3 3.0 NaN NaN 4 NaN NaN NaN
在行上沿每个组向前或向后传播非空值。
>>> df.T.groupby(np.array([0, 0, 1, 1])).fillna(method="ffill").T key A B C 0 0.0 0.0 2.0 2.0 1 0.0 2.0 3.0 3.0 2 1.0 1.0 NaN 2.0 3 1.0 3.0 NaN NaN 4 1.0 1.0 NaN NaN
>>> df.T.groupby(np.array([0, 0, 1, 1])).fillna(method="bfill").T key A B C 0 0.0 NaN 2.0 NaN 1 0.0 2.0 3.0 NaN 2 1.0 NaN 2.0 2.0 3 1.0 3.0 NaN NaN 4 1.0 NaN NaN NaN
仅替换组内沿行的第一个 NaN 元素。
>>> df.groupby("key").fillna(method="ffill", limit=1) A B C 0 NaN 2.0 NaN 1 2.0 3.0 NaN 2 NaN NaN 2.0 3 3.0 NaN 2.0 4 3.0 NaN NaN