我有一个数据集,其中有一个称为Outlet_Size
的序列,其中包含{'Medium', nan, 'High', 'Small'}
中的任意一个,缺少2566条记录,所以我想用mode()值填充它,所以我编写了如下内容:
train['Outlet_Size']=train['Outlet_Size'].fillna(train['Outlet_Size'].dropna().mode()]
但是当我试图通过命令找到丢失的NaN记录的号码时
sum(train['Outlet_Size'].isnull())
它仍在显示2566个南记录。为什么是这样?
谢谢你的回答
这里的问题是
mode
返回一个序列,这会导致fillna
失败,如果我们看一个简单的例子:因此,如果我们看看
mode
返回的结果,您可以看到它在上面失败了:这是一个序列,尽管只有一行,所以当您将它传递给
fillna
时,它只填充第一行,所以您需要通过索引到Series
来获取标量值:编辑
关于是否需要
dropna
,不需要:可以看到
NaN
被忽略相关问题 更多 >
编程相关推荐