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

2024-04-23 16:20:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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'])

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

有更好的办法吗


Tags: 文件csvpath内存nameidreadnames
1条回答
网友
1楼 · 发布于 2024-04-23 16:20:38

你可以试试这个。在

首先,创建你的chunker。在

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

现在创建一组ID:

^{pr2}$

现在迭代块:

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)

如果ids太大而无法放入主内存,则可能需要使用一些基于磁盘的数据库。在

相关问题 更多 >