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()
。- 参数:
- 值标量、字典、系列或数据帧
用于填充漏洞的值(例如 0),或者是值的字典/系列/数据帧,指定每个索引(对于系列)或列(对于数据帧)使用哪个值。不在 dict/Series/DataFrame 中的值将不会被填充。该值不能是列表。想要使用该
value
参数而不是该参数的用户method
应该更喜欢,DataFrame.fillna()
因为这会产生相同的结果并且性能更高。- 方法{{'bfill', 'ffill', None}}, 默认 None
用于填充孔的方法。
'ffill'
将在组内向前传播最后一个有效观察。'bfill'
将使用下一个有效观察来填补空白。- 轴{0 或“索引”、1 或“列”}
填充缺失值的轴。当
DataFrameGroupBy
axis
参数为时0
,使用axis=1
此处将产生与 相同的结果DataFrame.fillna()
。当DataFrameGroupBy
axis
参数为时1
,使用axis=0
或axis=1
会产生相同的结果。- inplace布尔值,默认 False
破碎的。不要设置为 True。
- limit int,默认无
如果指定了 method,则这是组内向前/向后填充的连续 NaN 值的最大数量。换句话说,如果存在连续 NaN 数量超过此数量的间隙,则只会部分填充。如果未指定 method,则这是沿整个轴填充 NaN 的最大条目数。如果不是 None,则必须大于 0。
- downcast dict,默认为 None
如果可能的话,要向下转换的 item->dtype 的字典,或者字符串“infer”,它将尝试向下转换为适当的相等类型(例如,如果可能,将 float64 转换为 int64)。
- 返回:
- 数据框
已填充缺失值的对象。
例子
>>> 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