【问题标题】:Getting duplicated rows of large excel file with Pandas [duplicate]使用 Pandas 获取重复的大型 Excel 文件行 [重复]
【发布时间】:2020-08-20 09:03:49
【问题描述】:

我有一个至少有 600,00 行的 excel 文件(大小不同)。我想使用 Pandas 获取特定列的所有重复项。

这是我迄今为止尝试过的:

use_cols = ['ID', 'AMOUNT']

df = pd.DataFrame()

for chunk in pd.read_csv("INPUT.csv", usecols=use_cols, chunksize=10000):
    df = pd.concat([df, chunk])

duplicates = df[df.duplicated(["ID"])]

print(duplicates)

但是,我得到的结果不是重复的,我不确定我可能做错了什么。有没有更有效的方法来解决这个问题?

【问题讨论】:

  • 您想要所有重复项吗?如果是这样,请使用df[df.duplicated(subset=['ID'],keep=False) ]
  • @Datanovice 谢谢! keep=False 为我做了。
  • 没问题,将其标记为重复,因为答案会详细说明

标签: python pandas


【解决方案1】:

我尝试过重复,但我得到了重复的行, 也就是说,我不考虑第一个,因为如果其他人不考虑,它将是唯一的

【讨论】:

    【解决方案2】:

    如果您正在对行为不符合预期的分块数据进行某种操作,那么您首先应该做的故障排除工作之一是考虑如何在数据集上执行该操作,然后您将如何在多个块/分区上执行该操作时聚合该操作。很多时候,你会发现有一些你还没有真正实现的方法需要适应。

    这里的问题是您正在以块的形式读取数据,因此在您的文件中重复但从未在块中多次出现的记录不会显示为重复。有多种方法可以处理这个问题,包括所谓的“外部合并排序”,您首先对数据进行排序,以便始终找到彼此相邻的重复项。另一个用户here 有一个方法,它采用了另一种可能更容易实现的方法。由于此方法仍在使用分块器,因此在处理所有数据方面应该不会造成问题。

    【讨论】:

    • 谢谢。但是,您所描述的不是我的情况,因为我没有找到每个块的重复项,我连接所有块然后找到重复项。
    猜你喜欢
    • 2014-06-18
    • 2017-07-05
    • 2015-10-03
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多