在熊猫数据框上,我有替换mileage
列中以下内容的功能:
for index,row in carsDF6.iterrows():
if carsDF6.loc[index,'mileage'] > 600000:
carsDF6.loc[index,'mileage'] = np.nan
if carsDF6.loc[index,'mileage'] < 4000:
carsDF6.loc[index,'mileage'] = np.nan
没问题。之后,我想用整个列mileage
中的均值替换那些np.nan,我正在使用:
carsDF6.mileage= carsDF6.mileage.map(lambda x: carsDF6.mileage.mean() if x == np.nan else x)
它没有引发任何错误,只是没有按照预期进行操作,因为当我使用以下命令检查NaN时:
carsDF6.loc[carsDF6.isnull().any(axis=1)]
它仍然抛出与NaN相同的6条记录。
答案 0 :(得分:2)
最简单的方法是将fillna
与平均值一起使用:
carsDF6['mileage'] = carsDF6.mileage.fillna(carsDF6.mileage.mean())
但是,如果您想修正方法,则可以使用NaN
与np.isnan
进行相等性检查:
carsDF6['mileage'] = carsDF6.mileage.map(lambda x: carsDF6.mileage.mean() if np.isnan(x) else x)