pandas.core.groupby.DataFrameGroupBy.fillna#

property DataFrameGroupBy.fillna#

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

参数
value标量、字典、系列或数据帧

用于填充空格的值(例如0),也可以是指定用于每个索引(用于系列)或列(用于数据帧)的值的dict/Series/DataFrame。不会填充不在DICT/系列/数据帧中的值。该值不能是列表。

method{‘BackFill’,‘bFill’,‘Pad’,‘ffill’,None},默认为None

用于填充重新索引的系列填充/填充中的孔洞的方法:将上一个有效观测向前传播到下一个有效回填/b填充:使用下一个有效观测来填充缺口。

axis{0或‘index’、1或‘Columns’}

沿其填充缺失值的轴。

inplace布尔值,默认为False

如果为True,则填写就地。注意:这将修改此对象上的任何其他视图(例如,DataFrame中某列的无副本切片)。

limitInt,默认为无

如果指定了方法,则这是要向前/向后填充的连续NaN值的最大数量。换句话说,如果存在超过此连续NAN数量的缺口,则只会部分填充。如果未指定方法,则这是将填充NAN的整个轴上的最大条目数。如果不是无,则必须大于0。

downcastDict,默认为无

一个Item->Dtype的字典,指示在可能的情况下向下强制转换的内容,或者字符串‘Infer’,它将尝试向下强制转换为适当的相等类型(例如,如果可能,从Float64转换为int64)。

退货
DataFrame或无

填充了缺少值的对象,否则为None inplace=True

参见

interpolate

使用插值法填充NaN值。

reindex

使对象符合新索引。

asfreq

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

示例

>>> 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

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

>>> df.fillna(method="ffill")
     A    B   C    D
0  NaN  2.0 NaN  0.0
1  3.0  4.0 NaN  1.0
2  3.0  4.0 NaN  1.0
3  3.0  3.0 NaN  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中。