-1

我有一段代码需要永远运行。有人知道如何优化吗?

该公式的目的是创建一个执行以下操作的列: when 'action' != 0, if 'PX_LAST'<'ma', populate 'buy_sell' with -1, if 'PX_LAST'>'ma', populate 'buy_sell' with 1; 在其他情况下,不要用新值填充“buy_sell”。

仅供参考 - 列“操作”填充为 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
4

1 回答 1

0

我认为你需要:

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)
于 2019-03-20T09:15:13.357 回答