python中的代码“df.dropna”擦除了我的整个数据框,我的代码有啥问题?
Posted
技术标签:
【中文标题】python中的代码“df.dropna”擦除了我的整个数据框,我的代码有啥问题?【英文标题】:The code "df.dropna" in python erases my entire data frame, what is wrong with my code?python中的代码“df.dropna”擦除了我的整个数据框,我的代码有什么问题? 【发布时间】:2019-08-25 03:49:23 【问题描述】:我想将所有 NaN 变量放在我的一列中,但是当我使用 df.dropna(axis=0, inplace=True)
时,它会擦除我的整个数据框。为什么会这样?
df.dropna
和 df.dropna(axis=0, inplace=True)
我都用过,去掉 NaN 也没用。
我正在对我的数据进行分箱,以便我可以运行高斯模型,但我无法使用 NaN 变量执行此操作,我想删除它们并且仍然有我的数据框来运行模型。
之前和之后
【问题讨论】:
您能否发布原始数据、重新创建 df 的代码以及产生错误结果的代码。请注意,只需从一列中删除NaN
,您就可以执行df['Col'] = df['Col'].dropna()
,您所写的是删除包含任何NaN
的行,这意味着如果您的所有行至少包含1 个NaN
,那么整个df将被删除
尝试df.dropna(how='all',axis=0, inplace=True)
,如果你不使用所有,它将删除所有具有NaN
的行
听起来你在某列的每一行都有一个 NaN。除了 anky_91 所说的,您还可以让 dropna 只查看列(或行)的子集。所以 df = df.dropna(subset=["col1_name"]) 它只会删除该列中具有 NaN 值的行。pandas.pydata.org/pandas-docs/stable/reference/api/…
@EdChum 我已经分享了之前和之后的数据集
@pramire1 你想在这里实现什么? dropna() 将删除所有行,因为每行中的一列或另一列是 nan
【参考方案1】:
不确定您的案例,但分享适用于我的案例的解决方案:
那些没用的:
df = df.dropna() #==> make the df empty.
df = df.dropna(axis=0, inplace=True) #==> make the df empty.
df.dropna(axis=0, inplace=True) #==> make the df empty.
成功的那个:
df.dropna(how='all',axis=0, inplace=True) #==> Worked very well...
感谢上面的 Anky 的评论。
【讨论】:
【参考方案2】:默认的 'dropna' 命令使用 'how=any' ,这意味着它将删除具有 'any' NaN 的每一行
正如您所发现的,这会删除具有“所有”NaN 列的行
df.dropna(how='all', inplace=True)
或者,更基本的:
newDF = df.dropna(how='all')
【讨论】:
以上是关于python中的代码“df.dropna”擦除了我的整个数据框,我的代码有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章