我有3个大tsv文件,其结构如下:
file1 : id,f1,f2,name,f3
file2 : id,f4,blah1,f5
file3 : id,f5,f6,blah2
我想创建从其他文件中提取的第三个文件:
result: id,name,blah1,blah2
目前我不能,因为在panda | vaex中加载一个文件会导致进程崩溃,因为它试图读取整个文件
怎么做
我将在vaex中使用生成的文件。。。我想还是1克左右
f1 = vaex.read_csv('stuff.tsv',convert=True,sep='\t')
然后:
f1.join(f2,left_on='id',right_on='id')
像这样的策略可能会让你的工作更轻松。它通过
id
跟踪跟踪项的merged_items
dict,并保存name
、blah1
和blah2
的值。然后,使用csv
的reader
,它逐行迭代每个文件,而不是一次迭代所有文件,以减少每次使用的必要内存。最后,它再次逐行写出项目。您需要对此进行修补,以适合您的具体用例,但这应该是一个不错的开始“convert”不会将文件加载到内存中…而是分块工作
然后:
相关问题 更多 >
编程相关推荐