微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有 Lambda 表达式的比较运算符无法找到 NaN 值

如何解决带有 Lambda 表达式的比较运算符无法找到 NaN 值

我正在尝试根据另一列的分类值替换列中的空值。但是 == 运算符让我后悔我一生中的所有重大决定。我在训练集中有 8523 行和 12 列,其中 7 个是分类的,5 个是数字的。

列是“Item_Identifier”、“Item_Weight”、“Item_Fat_Content”、“Item_Visibility”、 'Item_Type','Item_MRP','Outlet_Identifier','Outlet_Establishment_Year','Outlet_Size','Outlet_Location_Type','Outlet_Type','Item_Outlet_Sales'

我想根据“Outlet_Location_Type”的分类值填充“Item_Weight”列中的 NaN 值(float dtype)。我有一个字典(city_type_mean),以分类值作为键,将相应的值替换为值。我使用了以下代码

bool updateGui ;
QMetaObject::invokeMethod(this,"showDialog",Qt::BlockingQueuedConnection,Q_RETURN_ARG(bool,updateGui));
if(updateGui)
{
    //update GUI
}

但 Nan 值不受影响。我在有问题的代码图像之后附加了一个火车数据样本。

Train data sample

.

problemmaticcode snippet

到目前为止,我已解决的问题是上述 if 条件始终评估为 false 导致 else 被执行。而且我已经尝试了使用 is 和 pd.isnull() 方法的条件,但无济于事。非常感谢您对问题的任何帮助。另外,请在标记此问题之前告知我,以防重复。

解决方法

你能试试 isnan 而不是 == np.nan 吗?

train["Item_Weight"] = train.apply(lambda x: city_type_mean[x['Outlet_Location_Type']] if  np.isnan(x["Item_Weight"]) else x["Item_Weight"],axis=1) 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。