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