У меня проблемы с оптимизацией pandas l oop. Вот что я пытаюсь достичь:
higher_index=((df.COLUMN_A.values > value) & (df.COLUMN_B.values > pseudo_index)).argmax()
С помощью этой строки я найду первое значение в COLUMN_A, которое больше и имеет более высокий индекс, чем предыдущий value
. У этого value
есть index = pseudo_index (я сохранил все индексы в другом столбце, потому что где-то читал, что это быстрее)
Мне нужно выполнить этот процесс около 300000 раз.
Код хорошо и все, но мой len (df) = 603188, и для выполнения 300000 итераций требуется около 7 минут.
Может ли кто-нибудь рассказать о том, как улучшить это?
ОБНОВЛЕНИЕ
Мне потребовались бы годы, чтобы анонимизировать мои данные, поэтому я приложил все усилия здесь
Я постараюсь более подробно объяснить, что я ' я пытаюсь достичь:
higher_index=((df.COLUMN_A.values > value) & (df.COLUMN_C.values > pseudo_index)).argmax()
lower_index=((df.COLUMN_B.values > value) & (df.COLUMN_C.values > pseudo_index)).argmax()
if higher_index > lower_index:
print('nice')
else:
print('not so nice')
Эти первые две строки впервые обнаруживают меня, когда значение в COLUMN_A или _B превышает значение, указанное в COLUMN_ C.
немного больше нюансов, которые я не думаю, что могу поделиться легко, но я не могу просто объединить две первые строки, чтобы сэкономить время. Эти операции нужно делать отдельно