DataFrame.fillna(self, value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
使用指定的方法填充NA/NaN
值。
参数: | value : 用于填充孔的值(例如0),或者是 该值指定用于每个索引(对于Series)或列(对于DataFrame)使用哪个值。 不在 method : 填充重新索引的系列填充板/填充中的holes的方法: 将最后一个有效观察向前传播到下一个有效回填/填充: 使用下一个有效观察来填充间隙。 axis : {0或'index',1或'columns'} 填充缺失值所沿的轴。 inplace : 如果为 注意:这将修改此对象上的任何其他视图 (例如,DataFrame中列的无副本切片)。 limit : 如果指定了method, 则这是要向前/向后填充的连续NaN值的最大数量。 换句话说,如果存在连续的NaN数量大于此数量的缺口, 它将仅被部分填充。如果未指定method, 则这是将填写NaN的整个轴上的最大条目数。 如果不为None,则必须大于0。 downcast :
或者是字符串 它将尝试向下转换为适当的相等类型 (例如,如果可能,则从 |
返回值: |
缺少值的对象已填充。 |
例子
>>> df = pd.DataFrame([[np.nan, 2, np.nan, 0],
... [3, 4, np.nan, 1],
... [np.nan, np.nan, np.nan, 5],
... [np.nan, 3, np.nan, 4]],
... columns=list('ABCD'))
>>> df
A B C D
0 NaN 2.0 NaN 0
1 3.0 4.0 NaN 1
2 NaN NaN NaN 5
3 NaN 3.0 NaN 4
将所有NaN元素替换为0
>>> df.fillna(0)
A B C D
0 0.0 2.0 0.0 0
1 3.0 4.0 0.0 1
2 0.0 0.0 0.0 5
3 0.0 3.0 0.0 4
我们还可以向前或向后传播非null值
>>> df.fillna(method='ffill')
A B C D
0 NaN 2.0 NaN 0
1 3.0 4.0 NaN 1
2 3.0 4.0 NaN 5
3 3.0 3.0 NaN 4
将“ 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
1 3.0 4.0 2.0 1
2 0.0 1.0 2.0 5
3 0.0 3.0 2.0 4
仅替换第一个NaN元素
>>> df.fillna(value=values, limit=1)
A B C D
0 0.0 2.0 2.0 0
1 3.0 4.0 NaN 1
2 NaN 1.0 NaN 5
3 NaN 3.0 NaN 4