在pytables中相当于"从表中选择最大值(列)"

jag*_*uli 2 python sql pytables

我有一个包含大量数值的表,我知道我可以提取列并对其执行max(),但是可能有一种方法可以使用in-kernel方法来实现.但似乎无法找到它.

eld*_*d-a 6

在我做过的测试中,你可以使用iterrows方法而不是以下方式获得超过两倍的结果:

In [117]: timeit max(row['timestamp'] for row in table.iterrows(stop=1000000))
1 loops, best of 3: 1 s per loop

In [118]: timeit max(row['timestamp'] for row in table.where('(timestamp<=Tf)'))
1 loops, best of 3: 2.21 s per loop

In [120]: timeit max(frames.cols.timestamp[:1000000])
1 loops, best of 3: 974 ms per loop

In [121]: timeit np.max(frames.cols.timestamp[:1000000])
1 loops, best of 3: 876 ms per loop
Run Code Online (Sandbox Code Playgroud)

注意,上面的Tf是该列的1000000条目(它是Float64).

由于问题没有要求进行比较检查,因此可以节省测试...注意问题中提出的方法(将数据加载为numpy数组)仍然有点快(尽管差异小于3%并且对于较大的数据集,进一步缩小,我没有测试超过10 ^ 7行).我发现使用max numpy函数的最佳结果(见上文).

我也很乐意学习更有效的方法!