В поисках более быстрых циклов для больших фреймов данных - PullRequest
0 голосов
/ 15 апреля 2020

У меня очень простой l oop, который просто перебирает мой большой массив данных.

value = df.at[n,'column_A']

for y in range(0,len(df)):
    index=df[column_B.ge(value_needed)].index[y]
    if index_high  > n:
        break

С этим я пытаюсь найти первый индекс, значение которого больше чем значение Проблема в том, что этот l oop слишком небезопасен для запуска, когда len (df)> 200000

Есть идеи, как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Я sh у вас есть пример данных. Попробуйте это на ваших данных и дайте мне знать, что вы получите

import numpy as np
index = np.where(df[column_B] > value_needed)[0].flat[0]

Тогда

#continue with other logic
1 голос
/ 15 апреля 2020

В общем, вам следует избегать циклов с pandas, вот векторизованный способ получить то, что вы хотите:

df.loc[(df['column_B'].ge(value_needed)) & (df.index > n)].index[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...