熊猫中的lambda函数条件无法识别np.nan

时间:2018-12-08 17:18:35

标签: python-3.x pandas numpy dataframe

在熊猫数据框上,我有替换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条记录。

1 个答案:

答案 0 :(得分:2)

最简单的方法是将fillna与平均值一起使用:

carsDF6['mileage'] = carsDF6.mileage.fillna(carsDF6.mileage.mean())

但是,如果您想修正方法,则可以使用NaNnp.isnan进行相等性检查:

carsDF6['mileage'] = carsDF6.mileage.map(lambda x: carsDF6.mileage.mean() if np.isnan(x)  else x)