我正在尝试根据列对 pytable 进行排序,然后使用负步对 itersorted 进行反向迭代。根据文档,这是可能的:
http://pytables.github.io/usersguide/libref.html?highlight=itersorted#tables.Table.itersorted
但是,当我使用 step=-1 时出现以下错误:
溢出错误:无法将负值转换为无符号 PY_LONG_LONG
如果 step 为正,则不会发生错误。我已经用 pytables 2.4 和 3.0.0b1 试过了,两者都有同样的问题。
知道为什么会这样吗?这是一个错误吗?我需要做点别的吗?
我附上了一个最小的工作示例:
import tables
class IndexRecord(tables.IsDescription):
frame = tables.Int32Col(pos=1)
key = tables.StringCol(itemsize=40, pos=2)
h5 = tables.openFile("trace.h5", 'w')
index = h5.createTable(h5.root, "index", IndexRecord)
index.append([(0, 'A')])
index.append([(1, 'B')])
index.append([(3, 'C')])
index.append([(4, 'D')])
index.flush()
index.cols._f_col('frame').createCSIndex()
for row in index.itersorted('frame', step=-1): #<-crashes here!
print row['frame'], row['key']