В тесте, который я сделал, вы можете добиться более чем вдвое более быстрого результата, используя метод 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).
Так как вопрос не требует проверки сравнения, можно сэкономить тест where ...
Обратите внимание, что метод, предложенный в вопросе (загрузка данных в виде массива), все еще несколько быстрее (хотя разница составляет менее 3% и становится еще меньше для больших наборов данных, я не тестировал более 10 ^ 7 строк).
Лучшие результаты, которые я нашел, когда использовали функцию max numpy (см. Выше).
Я также был бы рад узнать о более эффективном методе!