Более быстрый способ найти значение в моем фрейме данных - PullRequest
0 голосов
/ 16 апреля 2020

У меня проблемы с оптимизацией 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 минут.

Может ли кто-нибудь рассказать о том, как улучшить это?

ОБНОВЛЕНИЕ

Мне потребовались бы годы, чтобы анонимизировать мои данные, поэтому я приложил все усилия здесь

enter image description here

Я постараюсь более подробно объяснить, что я ' я пытаюсь достичь:

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.

немного больше нюансов, которые я не думаю, что могу поделиться легко, но я не могу просто объединить две первые строки, чтобы сэкономить время. Эти операции нужно делать отдельно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...