Условно в NumPy.Как я могу положить 3 или более в моем фрейме данных, используя панды или NumPy? - PullRequest
0 голосов
/ 13 декабря 2018

У меня проблемы с синтаксисом.Я хочу купить, когда LastPrice будет> к нижней полосе, и продать, когда уровень LastPrice == sma, если это значение равно true, я хочу поместить результат в столбец как: "Buy", это не так, как это положить "Продам "

Мой код:

df['LastPrice'].dropna(inplace=True)
sma = df['LastPrice'].rolling(window=20).mean()
rstd = df['LastPrice'].rolling(window=20).std()
df['upper_band'] = sma + 2 * rstd
df['lower_band'] = sma - 2 * rstd
df['laseñalota'] = np.where((df['LastPrice'] > df['lower_band'],"Buy") & (df['LastPrice'] == sma), "Sell")

Ошибка:

operands could not be broadcast together with shapes (2,) (4508,) 

1 Ответ

0 голосов
/ 13 декабря 2018
df['laseñalota'] = np.where(df['LastPrice'] > df['lower_band'], 'Buy', 
    np.where(df['LastPrice'] <= sma, 'Sell', 'Do Nothing'))

Согласно предложению @ user3483203, также можно использовать np.select, если у вас есть больше условий и вы хотите более точно отразить их в отдельной строке кода.См. Ниже код для примера:

condlist = [df['LastPrice'] > df['lower_band'], df['LastPrice'] <= sma]
choicelist = ['Buy', 'Sell']
df['new_laseñalota'] = np.select(condlist, choicelist)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...