我应该如何以最快的方式做到这一点?
我有一个包含一些表格的 .h5 文件。每个表大约有 1000 万(或更多)行。
整个文件大约10GB,(文件无法容纳在内存中)
这些表是“链接的”,这意味着所有表都具有相同的列 (ID),用作它们之间链接的列。
现在,如果我调用我的表:table1、table2、table3、table4 等...我正在寻找使用 table1 中的 ID 数据在 table2 中执行快速搜索的最快方法。
举个例子,这是我到目前为止所做的:
#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 就会崩溃......
最佳答案
尽管没有 Elixir ,但您可以采取一些措施来加快速度。
如果您可以将所有表格合并为一个具有更多列的表格,那么您就不必循环两次。
您可以根据 ID 为表建立索引。这将提高搜索性能。
更改表的 block 形状,使其更适合您的问题。如果你把它做得更小,那么这应该有助于解决崩溃问题。
关于python - 从pytables中的多个表中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23429919/