2024-04-23 16:20:38 发布
网友
我有一个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'])
但是如果重复的行分布在不同的块中,脚本就不能得到预期的结果。在
有更好的办法吗
你可以试试这个。在
首先,创建你的chunker。在
chunker = pd.read_table(AUTHORS_PATH, names=['Author ID', 'Author name'], encoding='utf-8', chunksize=10000000)
现在创建一组ID:
现在迭代块:
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太大而无法放入主内存,则可能需要使用一些基于磁盘的数据库。在
ids
你可以试试这个。在
首先,创建你的chunker。在
现在创建一组ID:
^{pr2}$现在迭代块:
但是,现在,在循环体中,也删除已知ID集中已有的ID:
最后,仍然在循环体中,添加新的id
如果
ids
太大而无法放入主内存,则可能需要使用一些基于磁盘的数据库。在相关问题 更多 >
编程相关推荐