Оптимизация цикла while в Python - PullRequest
0 голосов
/ 20 марта 2019

У меня есть кусок кода, который работает вечно. Кто-нибудь знает, как это оптимизировать?

Цель формулы - создать столбец, который выполняет следующие действия: когда 'action' != 0, if 'PX_LAST'<'ma', populate 'buy_sell' with -1, if 'PX_LAST'>'ma', populate 'buy_sell' with 1; в других случаях не заполняйте 'buy_sell' новыми значениями.

Fyi - в столбце «action» указывается 0 или 1

#create column
df_zinc['buy_sell'] = 0
index = 0

while index < df_zinc.shape[0]:
    if df_zinc['action'][index] != 0:
        continue
        if df_zinc['PX_LAST'][index]<df_zinc['ma'][index]:
            df_zinc.loc[index,'buy_sell'] = -1
        elif df_zinc['PX_LAST'][index]>df_zinc['ma'][index]:
            df_zinc.loc[index,'buy_sell'] = 1
    else:
        index = index + 1

1 Ответ

0 голосов
/ 20 марта 2019

Я думаю, вам нужно:

import numpy as np

mask1 = df_zinc['action'] != 0
mask2 = df_zinc['PX_LAST'] < df_zinc['ma']
mask3 = df_zinc['PX_LAST'] > df_zinc['ma']

df_zinc['buy_sell'] = np.select([mask1 & mask2, mask1 & mask3], [-1,1], 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...