【问题标题】: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.dropnadf.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

标签: python pandas nan gaussian naivebayes


【解决方案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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多