让我们举例如下:
import tables
import numpy as np
# Two Example Tables
hfile = tables.open_file('myfile.h5', 'a')
data1 = np.ones((3, 2))
data1.dtype = [('a', float), ('b', float)]
data2 = np.zeros((3, 2))
data2.dtype = [('a', float), ('b', float)]
table1 = hfile.create_table(where='/', name='table1', obj=data1)
table2 = hfile.create_table(where='/', name='table2', obj=data2)
# Appending
table1.append(table2.read())
table2.remove()
hfile.flush()
hfile.close()
有没有更好的方法在磁盘上执行此操作?
一种解决方案是遍历行:
for r in table2.iterrows():
table1.append([r[:]])
后者看起来很笨重,前者在追加之前将整个第二张桌子记入记忆中。我宁愿做类似的事情:
table2.append_where(dstTable=table1)
但是这个函数只适用于一个条件,所以我需要一个总是求值为true的函数来获取整个表。当然必须有更好的方法。
答案 0 :(得分:0)
我认为append_where()
具有像'True'
这样的微不足道的条件可能是最佳解决方案。
答案 1 :(得分:0)
我为PyTables创建了一个pull request来使条件可选,就像@jtorca所要求的那样。鉴于support voiced by one of the maintainers,它很可能被接受并包含在PyTables的未来版本中。