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)。 返回: 数据框已填充缺失值的对象。 也可以看看 ffill转发组内的填充值。 bfill向后填充组内的值。 例子 >>> 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