在大多数情况下,使用fillna来补全缺失值,调用fillna时可以使用一个常数作为参数来替代缺失值:
df = pd.DataFrame(np.random.rand(7, 3))
df.iloc[2:5, 1] = None
df.iloc[1:3, 2] = None
df
0 1 2
0 0.967993 0.050330 0.003995
1 0.582064 0.158570 NaN
2 0.589933 NaN NaN
3 0.604145 NaN 0.116464
4 0.845152 NaN 0.410299
5 0.048739 0.829082 0.378123
6 0.455217 0.978345 0.204766
df.fillna(0)
0 1 2
0 0.967993 0.050330 0.003995
1 0.582064 0.158570 0.000000
2 0.589933 0.000000 0.000000
3 0.604145 0.000000 0.116464
4 0.845152 0.000000 0.410299
5 0.048739 0.829082 0.378123
6 0.455217 0.978345 0.204766
使用method参数可以使用缺失值的前一个值或后一个值填充,默认为ffill。
0 1 2
0 0.967993 0.050330 0.003995
1 0.582064 0.158570 NaN
2 0.589933 NaN NaN
3 0.604145 NaN 0.116464
4 0.845152 NaN 0.410299
5 0.048739 0.829082 0.378123
6 0.455217 0.978345 0.204766
- 参数bfill使用缺失值的后一个值填充(理解为backfill):
df.fillna(method='bfill')
0 1 2
0 0.967993 0.050330 0.003995
1 0.582064 0.158570 0.116464
2 0.589933 0.829082 0.116464
3 0.604145 0.829082 0.116464
4 0.845152 0.829082 0.410299
5 0.048739 0.829082 0.378123
6 0.455217 0.978345 0.204766
- 参数ffill使用缺失值的前一个值填充(理解为frontfill):
df.fillna(method='ffill')
0 1 2
0 0.967993 0.050330 0.003995
1 0.582064 0.158570 0.003995
2 0.589933 0.158570 0.003995
3 0.604145 0.158570 0.116464
4 0.845152 0.158570 0.410299
5 0.048739 0.829082 0.378123
6 0.455217 0.978345 0.204766
使用limit参数可以指定最大填充范围。
df.fillna(method='ffill', limit=1)
0 1 2
0 0.967993 0.050330 0.003995
1 0.582064 0.158570 0.003995
2 0.589933 0.158570 NaN
3 0.604145 NaN 0.116464
4 0.845152 NaN 0.410299
5 0.048739 0.829082 0.378123
6 0.455217 0.978345 0.204766
标签:0.116464,补全,df,0.158570,NaN,Pandas,0.003995,0.829082,缺失
From: https://www.cnblogs.com/ToryRegulus/p/17133198.html