当前位置: 首页 > 知识库问答 >
问题:

如何在大数据文件中使用熊猫删除重复的行?

宇文育
2023-03-14

我有一个csv文件太大,无法加载到内存中。我需要删除文件的重复行。所以我这样做:

chunker = pd.read_table(AUTHORS_PATH, names=['Author ID', 'Author name'],      encoding='utf-8', chunksize=10000000)

for chunk in chunker:
    chunk.drop_duplicates(['Author ID'])

但是如果重复的行分布在不同的块中,就像上面的脚本不能得到预期的结果。

还有更好的方法吗

共有1个答案

弘承业
2023-03-14

你可以试试这样的东西。

首先,创建你的chunker。

chunker = pd.read_table(AUTHORS_PATH, names=['Author ID', 'Author name'], encoding='utf-8', chunksize=10000000)

现在创建一组id:

ids = set()

现在遍历块:

for chunk in chunker:
    chunk.drop_duplicates(['Author ID'])

但是,现在在循环体中,也删除已知id集合中的id:

    chunk = chunk[~chunk['Author ID'].isin(ids)]

最后,仍然在循环的主体中,添加新的 id

    ids.update(chunk['Author ID'].values)

如果< code>ids太大而不适合主存,您可能需要使用一些基于磁盘的数据库。

 类似资料:
  • 我有一个熊猫数据框,看起来像这样。 我想确定猫和蝙蝠是重复的相同值,因此想删除一条记录,只保留第一条记录。所得到的数据帧应该只具有。

  • 问题内容: 我有一个看起来像这样的熊猫数据框。 我想确定cat和bat是重复的相同值,因此想删除一个记录并仅保留第一条记录。结果数据帧应该只有一个。 问题答案: 使用具有与列的列表上检查重复和保持第一重复的。 如果是: 结果: 然后: 结果:

  • 我想从熊猫数据框中完全删除重复的项目。例如,我有数据框: 我要做的是在列中查找唯一的值,并删除所有重复的项。。因此,最终产品将如下所示(注意已消失): 谢谢。

  • 问题内容: 我遇到了一个看似简单的问题:在熊猫数据框中删除唯一的行。基本上与的相反。 假设这是我的数据: 当A和B唯一时,我想删除行,即我只保留行1和2。 我尝试了以下方法: 但是我只能得到第2行,因为唯一性是0、1和3! 问题答案: 选择所有重复行的解决方案: 您可以使用子集和参数来选择所有重复项: 解决方案: 对所有唯一行进行了一些修改的解决方案:

  • 问题内容: 我有一个熊猫DataFrame,里面有很多值。 如何删除这样的列? 我试图这样做: 有更优雅的方法吗? 问题答案: 这是保留每列中小于或等于指定数量的nan的列的另一种选择: 在我的测试中,这似乎比李建勋在我测试的案例中建议的放置列方法要快一些:

  • 我的任务是突出显示熊猫数据框中的所有电子邮件副本。是否有一个函数用于此操作,或者有一种方法可以删除所有非重复项,从而为我留下一个很好的列表,列出数据集中的所有重复项? 该表由六列组成: 我想摆脱最后一列,因为最后一封邮件不是重复的。