pandas DataFrame替换指定列的nan

平时习惯针对整个DataFrame把nan替换成0,用df.fillna(0, inplace=True)就OK了。今天突然有人问,如何只替换某一列的nan。测试并记录如下。
构建测试DataFrame,由3列组成 nameagescore, 后两列都有nan值。接下来测试如何只处理age列。

1
2
3
4
df = pd.DataFrame({'name':['aby','boy','cilia'],'age':[18,np.nan,20],'score':[9.5,8.0,np.nan]})
print(df)
df['age'].fillna(0, inplace=True)
print(df)

处理前,DataFrame如下:

1
2
3
4
    name   age  score
0 aby 18.0 9.5
1 boy NaN 8.0
2 cilia 20.0 NaN

处理后,DataFrame如下:

1
2
3
4
    name   age  score
0 aby 18.0 9.5
1 boy 0.0 8.0
2 cilia 20.0 NaN

以上示例代码表明,可直接用fillna()方法针对某一列DataSeries做替换,参数同DataFrame一样。