Первое значение больше n внутри np.where () - PullRequest
0 голосов
/ 02 июля 2019

Мне нужно вычесть каждую строку в определенном столбце в trades_right из каждой строки в определенном столбце в trades_left, чтобы найти все случаи, когда выполняются два условия для этих различий. Ожидаемый результат - столбец (indicator2) с 1, если оба условия выполнены, и 0 в противном случае. У меня проблема со вторым условием, когда я пытаюсь найти минимальную разницу между trades_left['ms'] и trades_right['ms'], которая больше или равна 1. Я использовал метод № 2 здесь: https://www.geeksforgeeks.org/python-find-smallest-element-greater-than-k/

Код:

for row in trades_left:
    trades_left['indicator2'] = np.where(((trades_left['indicator'] - trades_right['indicator']) == -1) & ((trades_left['ms'] - trades_right['ms']) = min((trades_left['ms'] - trades_right['ms']) for (trades_left['ms'] - trades_right['ms']) in trades_left if (trades_left['ms'] - trades_right['ms']) >= 1)), 1, 0)

Ошибка:

  File "<ipython-input-79-3fcf3d6fb7a4>", line 2
    trades_left['indicator2'] = np.where(((trades_left['indicator'] - trades_right['indicator']) == -1) & ((trades_left['ms'] - trades_right['ms']) == min((trades_left['ms'] - trades_right['ms']) for (trades_left['ms'] - trades_right['ms']) in trades_left if (trades_left['ms'] - trades_right['ms']) >= 1)), 1, 0)
                                                                                                                                                                                                       ^
SyntaxError: can't assign to operator

[Редактировать] Добавлено предложение в комментариях, теперь у меня есть другая ошибка. Я также пробовал (trades_left['ms'] - trades_right['ms']) после in. Возможно, метод, который я связал, неприменим для двух фреймов данных, поэтому я был бы признателен за предложения о том, как учитывать второе условие.

...