DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=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
