pandas.DataFrame.fillna # 数据框。fillna ( value = None , * , method = None , axis = None , inplace = False , limit = None , downcast = _NoDefault.no_default ) [来源] # 使用指定的方法填充 NA/NaN 值。 参数: 值标量、字典、系列或数据帧用于填充漏洞的值(例如 0),或者是值的字典/系列/数据帧,指定每个索引(对于系列)或列(对于数据帧)使用哪个值。不在 dict/Series/DataFrame 中的值将不会被填充。该值不能是列表。 方法{'backfill', 'bfill', 'ffill', None}, 默认 None用于填充重新索引系列中的孔的方法: ffill:将最后一个有效观察向前传播到下一个有效观察。 backfill / bfill:使用下一个有效观察来填补空白。 自版本 2.1.0 起已弃用:使用 ffill 或 bfill 代替。 轴{0 或 'index'} 对于 Series,{0 或 'index', 1 或 'columns'} 对于 DataFrame填充缺失值的轴。对于系列 ,此参数未使用,默认为 0。 inplace布尔值,默认 False如果为 True,则就地填写。注意:这将修改该对象上的任何其他视图(例如,DataFrame 中列的无复制切片)。 limit int,默认无如果指定了 method,则这是要向前/向后填充的连续 NaN 值的最大数量。换句话说,如果存在连续 NaN 数量超过此数量的间隙,则只会部分填充。如果未指定 method,则这是沿整个轴填充 NaN 的最大条目数。如果不是 None,则必须大于 0。 downcast dict,默认为 None如果可能的话,要向下转换的 item->dtype 的字典,或者字符串“infer”,它将尝试向下转换为适当的相等类型(例如,如果可能,将 float64 转换为 int64)。 自 2.2.0 版本起已弃用。 返回: 系列/数据框或无缺失值已填充的对象,如果 则为 None inplace=True。 也可以看看 ffill通过将最后一个有效观察传播到下一个有效观察来填充值。 bfill通过使用下一个有效观察来填补空白来填充值。 interpolate使用插值填充 NaN 值。 reindex使对象符合新索引。 asfreq将 TimeSeries 转换为指定频率。 例子 >>> 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 中。