pandas.DataFrame.fillna()
函数可用于将Pandas数据帧(DataFrame)中的缺失值(NaN)用指定的值或方式进行填充。具体使用方法如下:
'''
fillna(value,method,axis,inplace,limit)
- value:用来填充缺失值的常数或字典,可使用字典为多列填充不同的常数
- method:填充方式,向下/右(ffill)或向上/左(bfill)填充
- axis:对缺失值填充的轴,默认0(按列填充),1为按行填充
- inplace:是否修改原数据帧
- limit:限制向前或向后填充的最大数量
'''
接下来,我们将以一个小实验的方式来具体说明fillna()填充方式如何使用,并且,在多级列索引的情况下如何使用
1.1、数据准备
多级列索引(类型1):
arr = np.array([[1, 4, 1, 3], [2, 3, np.nan, 4], [2, np.nan, np.nan, 7], [3, 5, np.nan, 2], [4, 2, 3, 5]])
dfx = pd.DataFrame(arr, columns=pd.MultiIndex.from_product([['bar', 'foo'], ['one', 'two']]))
print(dfx.to_string())
'''
bar foo
one two one two
0 1.0 4.0 1.0 3.0
1 2.0 3.0 NaN 4.0
2 2.0 NaN NaN 7.0
3 3.0 5.0 NaN 2.0
4 4.0 2.0 3.0 5.0
'''
1.2、整个df填充操作
1) 对整个df按列向下填充
dfx1 = dfx.fillna(method='ffill')
print(dfx1.to_string())
'''
bar foo
one two one two
0 1.0 4.0 1.0 3.0
1 2.0 3.0 1.0 4.0
2 2.0 3.0 1.0 7.0
3 3.0 5.0 1.0 2.0
4 4.0 2.0 3.0 5.0
'''
2) 对整个df按列向上填充
dfx2 = dfx.fillna(method='bfill')
print(dfx2.to_string())
'''
bar foo
one two one two
0 1.0 4.0 1.0 3.0
1 2.0 3.0 3.0 4.0
2 2.0 5.0 3.0 7.0
3 3.0 5.0 3.0 2.0
4 4.0 2.0 3.0 5.0
'''
3) 对整个df按行向右填充
dfx3 = dfx.fillna(method='ffill', axis=1)
print(dfx3.to_string(