我怎么以最快的方式做到这一点?
我有一个带有一些表格的.h5文件。表格每行有1000万(或更多)行。
整个文件大约10GB,(文件不适合内存)
这些表是"链接",这意味着它们都具有相同的列(ID),用作它们之间链接的列。
现在,如果我调用我的表:table1,table2 table3 table4等...我正在寻找在table2中执行快速搜索的最快方法,其中包含来自table1的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就会崩溃.....
答案 0 :(得分:1)
虽然没有灵丹妙药,但你可以采取一些措施来加快速度。
如果您可以将所有表格合并到一个包含更多列的表格中,那么您就不必循环两次。
您可以根据ID索引表格。这将提高搜索性能。
更改表格的表格,使其更适合您的问题。如果你把它缩小,那么这应该有助于崩溃。