У меня есть большая база данных (240 миллионов строк), разделенная на блоки, с отметкой начала блока (sob) в качестве одного из столбцов, 1,3 миллиона блоков.
Я создал серию block_start:
block_start = pd.series(df[df.sob == True].index)
и вычислите ряд длин блоков:
block_len = block_start.shift(-1) - block_start.
Теперь мне нужно выяснить, содержит ли каждый блок хотя бы один сигнал (true) в логическом столбце:
signals = []
for i in range(len(block_start)):
signals.append(df.signal[block_start[i]:block_start[i]+block_len[i]].any())
Вышеуказанный цикл занимает 20 минут.Есть идеи как его укоротить?