在pytables中从多个表中选择数据



我应该如何以最快的方式做到这一点?

我有一个.h5文件与一些表。每个表有大约1000万(或更多)行。

整个文件大约10GB,(文件不适合内存)

这些表是"链接的",这意味着它们都有相同的列(ID),用作它们之间链接的列。

现在,如果我调用我的表:table1, table2, table3, table4等等…我正在寻找最快的方式在表2中执行快速搜索,与表1的ID数据。

作为一个例子,这是我目前所做的:

#search on the table1 and get ID's for the first condition
searchID= "".join(["(ID==%i)|"%j['ID'] for j in table1.where('some conditions for table1')])[:-1]
#search on table2 based on the ID's from table1
for row in table2.where(searchID):
    #do something with row

问题是我不认为这是一个非常有效的解决方案。而且,我注意到,如果searchID增长很多,Spyder就会崩溃.....

您可以做几件事情来潜在地使它更快,尽管没有灵丹妙药。

  1. 如果你能把所有的表合并成一个有更多列的表,那么你就不需要循环两次了。

  2. 您可以根据ID对表进行索引。这将提高搜索性能。

  3. 更改表的块形状以更适合您的问题。

相关内容

  • 没有找到相关文章

最新更新