首页 > 解决方案 > dropna() 函数的问题和 dropna() 的替代方案

问题描述

我正在学习在 Python 中使用 dropna() 函数,以删除包含 NaN/'?' 的行/列 其中的价值观。但是,即使在网上看到各种解决方案后,尽管没有语法错误,我也无法删除数据。

我尝试了以下解决方案:

第一次尝试

df1 = df.dropna()
df1

继续

df1.dropna(inplace=1)
df1

代码的第一部分给了我原始数据框

第二部分给了我以下错误:

-------------------------------------------------- ------------------------- ValueError Traceback (最近一次调用最后一次) in () ----> 1 df1.dropna(inplace=1) 2 3 DF1

~\Anaconda3\lib\site-packages\pandas\core\frame.py 在 dropna(self,axis,how,thresh,subset,inplace) 4259 1 Batman Batmobile 1940-04-25 4260 """ -> 4261 inplace = validate_bool_kwarg(inplace, 'inplace') 4262 if isinstance(axis, (tuple, list)): 4263 # GH20987

~\Anaconda3\lib\site-packages\pandas\util_validators.py in validate_bool_kwarg(value, arg_name) 224 raise ValueError('For argument "{arg}" expected type bool, received '225 'type {typ}.'.format (arg=arg_name, --> 226 typ=type(value).name ) ) 227 返回值 228

ValueError:对于参数“就地”预期类型 bool,接收类型

此外,是否有更好的替代 dropna() 函数?


编辑 1

  1. 链接到我的 Python 笔记本处理缺失数据.ipynb
  2. 我试图将 inplace 的参数值更改为 True,但它给了我以下错误:

NameError:名称“df1”未定义

PS 所有的错误和问题都在代码中可见

链接到使用的 CSV 文件 = CSV


标签: pythonpandasdataframe

解决方案


首先更换?与南,像这样:

df.replace('?', np.nan)

然后使用dropna删除所有缺失值(您刚刚在上面替换的 nan,如下所示:

df1 = df.dropna()
df1

然后使用inplace将 DataFrame 与有效条目保持在同一个变量中,如下所示:

df1.dropna(inplace=True)
df1

推荐阅读