На самом деле, если скорость важна, я сделал несколько тестов:
df = pd.DataFrame(np.random.randn(10000, 30000))
Тест 1, самый медленный: чистый pandas
(df < 0).any().any()
# 303 ms ± 1.28 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
Тест 2, быстрее: переключение на numpy с .values
для проверки наличия записи True
(df < 0).values.any()
# 269 ms ± 8.19 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
Тест 3, может быть, даже быстрее, хотя и незначительно: переключение на numpy для всего
(df.values < 0).any()
# 267 ms ± 1.48 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)