小编典典

pytables中的“来自表的“ elect max(column)”)的等效项是什么

sql

我有一个带有很多数值的表,我知道我可以提取该列并对其进行max(),但是可能有一种使用内核方法进行此操作的方法。只是似乎无法找到它。


阅读 193

收藏
2021-04-28

共1个答案

小编典典

在我进行的测试中,您可以使用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

请注意,Tf上方是该列的1000000条目(它是Float64)。

由于问题不要求进行比较检查,因此可以省去哪里的测试…请注意,问题中建议的方法(将数据加载为numpy数组)仍然有些快(尽管差异小于3%,并且对于更大的数据集,它变得更小,我没有测试10
^ 7行以上)。我发现使用max numpy函数的最佳结果(请参见上文)。

我也很高兴学习更有效的方法!

2021-04-28