【问题标题】:How to delete empty duplicates in a dataframe in a smart way?如何以智能的方式删除数据框中的空重复项?
【发布时间】:2021-01-07 19:45:30
【问题描述】:

我有一个大型数据集。它缺少一些数据。数据集包含string(用于名称等列)和float(用于高度等列)类型的变量。此数据集中的某些行只是缺少数据的重复项(有时带有后缀编号)。我想要做的是删除空的重复项,留下有数据的重复项(有时同一个人可以有 2 行填充不同的数据,但这没关系,我想这样留下)。

要知道的重要一点是,虽然我将字符串类型列中的空值更改为np.nan,但在float 类型列中,空值由-99.0 表示。顺便说一句,将其设置为-1而不是-99.0会更好吗?还是没有区别?稍后我将在机器学习模型中使用它。

所以我的解决方案是:

  1. 编写一个函数,给定两个行索引,返回其中包含更多数据的行的索引,如果它们都填充了数据,则返回两者。
  2. 编写另一个函数,将遍历数据集并(使用前一个函数)比较重复项并删除空的。

但问题是,这对我来说需要大量的编码,而且这样做似乎不是很聪明的方法(我知道可能有更好的方法)。更不用说我在尝试按自己的方式做时遇到的可怕错误......

无论如何,你们知道更好的方法吗?甚至不一定是代码,只是一个如何更有效地完成它的想法。提前致谢。

【问题讨论】:

    标签: python pandas duplicates dataset data-cleaning


    【解决方案1】:

    如果您只想删除具有空“NaN”值的列,请运行此

    df.dropna(subset = ["column_with_empty_NaNs"], inplace=True)
    

    如果您想删除包含任何空单元格的行

    df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
    

    如果要删除包含所有空单元格的行

    df.dropna(axis=0, how='all', thresh=None, subset=None, inplace=False)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-25
    • 2014-11-02
    • 1970-01-01
    • 2016-10-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多