python - 从pytables中的多个表中选择数据

标签 python linked-list pytables

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

我有一个包含一些表格的 .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 ,但您可以采取一些措施来加快速度。

  1. 如果您可以将所有表格合并为一个具有更多列的表格,那么您就不必循环两次。

  2. 您可以根据 ID 为表建立索引。这将提高搜索性能。

  3. 更改表的 block 形状,使其更适合您的问题。如果你把它做得更小,那么这应该有助于解决崩溃问题。

关于python - 从pytables中的多个表中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23429919/

相关文章:

python - Python operator.xor 的奇怪行为

c++ - 双向链表以及如何将迭代器移动到下一个节点

c - 如何创建一个包含动态设置数据类型的 C LinkedList

python - 合并具有数百万行的磁盘表时出现问题

python - 用另一个 pandas DataFrame 更新存储在 Pytable 中的 pandas DataFrame

python - Pandas - 仅重命名第一个字典匹配项而不是最后一个匹配项

python 异步特殊类方法 __delete__

python - 尝试通过Pyspark从SQL写入Kudu时遇到的错误

WPF 数据绑定(bind)到链表

mysql - 5000 万个节点层次结构或更大