DataFrame.fillna(value=Nonemethod=Noneaxis=Noneinplace=Falselimit=Nonedowncast=None**kwargs)

功能:使用指定的方法填充NA / NaN值

参数:value : 变量, 字典, Series, or DataFrame

    用于填充缺失值(例如0),或者指定为每个索引(对于Series)或列(对于DataFrame)使用哪个字典/Serise/DataFrame的值。(不在字典/Series/DataFrame中的值不会被填充。)这个值不能是一个列表。

   method : {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, 默认值 None           在Series中使用方法填充空白(向前填充,向后填充)

   axis : {0 or ‘index’, 1 or ‘columns’}

   inplace : boolean, 默认值 False         如果为Ture,在原地填满。注意:这将修改次对象上的任何其他视图(例如,DataFrame中的列的无复制贴片)

   limit : int, 默认值 None            

                   如果指定了方法,则这是连续的NaN值的前向/后向填充的最大数量。 换句话说,如果连续NaN数量超过这个数字,它将只被部分填充。 如果未指定方法,则这是沿着整个轴的最大数量,其中NaN将被填充。 如果不是无,则必须大于0。

   downcast : dict, 默认是 None

       如果可能的话,把 item->dtype 的字典将尝试向下转换为适当的相等类型的字符串(例如,如果可能的话,从float64到int64)

返回:被充满的DataFrame  

例子:

         

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

#向前或向后传播
>>>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

#用字典替换
>>>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

  

posted on 2017-11-25 14:53  黑蝴蝶  阅读(17473)  评论(1编辑  收藏  举报