pandas.Series.fillna#
- Series.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)[源代码]#
使用指定的方法填充NA/NaN值。
- 参数
- value标量、字典、系列或数据帧
用于填充空格的值(例如0),也可以是指定用于每个索引(用于系列)或列(用于数据帧)的值的dict/Series/DataFrame。不会填充不在DICT/系列/数据帧中的值。该值不能是列表。
- method{‘BackFill’,‘bFill’,‘Pad’,‘ffill’,None},默认为None
用于填充重新索引的系列填充/填充中的孔洞的方法:将上一个有效观测向前传播到下一个有效回填/b填充:使用下一个有效观测来填充缺口。
- axis{0或‘index’}
沿其填充缺失值的轴。
- inplace布尔值,默认为False
如果为True,则填写就地。注意:这将修改此对象上的任何其他视图(例如,DataFrame中某列的无副本切片)。
- limitInt,默认为无
如果指定了方法,则这是要向前/向后填充的连续NaN值的最大数量。换句话说,如果存在超过此连续NAN数量的缺口,则只会部分填充。如果未指定方法,则这是将填充NAN的整个轴上的最大条目数。如果不是无,则必须大于0。
- downcastDict,默认为无
一个Item->Dtype的字典,指示在可能的情况下向下强制转换的内容,或者字符串‘Infer’,它将尝试向下强制转换为适当的相等类型(例如,如果可能,从Float64转换为int64)。
- 退货
- 系列或无
填充了缺少值的对象,否则为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中。