Цель: выводить индикаторы покупки / продажи / нейтральности / ошибки в один df [столбец] при фильтрации «ложных» значений.Индикаторы основаны на приведенном ниже столбце данных, а затем формулируются с помощью логического выражения:
df['sma_10'] = pd.DataFrame(ta.SMA(df['close'], timeperiod=10), dtype=np.float, columns=['close'])
df['buy'] = pd.DataFrame(df['close'] > df['sma_10'], columns=['buy'])
df['buy'] = df['buy'].replace({True: 'BUY'})
df['sell'] = pd.DataFrame(df['close'] < df['sma_10'], columns=['sell'])
df['sell'] = df['sell'].replace({True: 'SELL'})
df['neutral'] = pd.DataFrame(df['close'] == df['sma_10'], columns=['neutral'])
df['neutral'] = df['neutral'].replace({True: 'NEUTRAL'})
df['error'] = pd.DataFrame((df['buy'] == False) & (df['sell'] == False) & (df['neutral'] == False), columns=['Error'])
df['error'] = df['error'].replace({True: 'ERROR'})
Токовый выход df
buy sell Neutral Error
False False False ERROR
BUY False False False
False SELL False False
False False NEUTRAL False
Желаемый вывод df
Indicator
ERROR
BUY
SELL
NEUTRAL
Попытки и методы: 1-й метод: объединить все столбцы «купить / продать / нейтральный / ошибка» и попытаться сбросить «ложные» значения.Кадр данных повторяется только один раз, прежде чем происходит сбой.
df['sma_10_indic']=[df['buy'].astype(str)+df['sell'].astype(str)+df['neutral'].astype(str)+df['error'].astype(str)].drop("False")
Я пробовал подпрограмму if & elif, такую как: Этот метод также выдает ошибку перед первым индексом
df['buy'] = pd.DataFrame(df['close'] > df['sma_10'])
df['sell'] = pd.DataFrame(df['close'] < df['sma_10'])
df['neutral'] = pd.DataFrame(df['close'] == df['sma_10'])
error = ((buy == False) and (sell == False) and (neutral == False))
if (df['buy'] == "True"):
df['sma_10_indic'] = pd.DataFrame("BUY",columns=['indicator'])
elif (df['sell'] == "True"):
df['sma_10_indic'] = pd.DataFrame("SELL",columns=['indicator'])
elif (df['neutral'] == "True"):
df['sma_10_indic'] = pd.DataFrame("NEUTRAL",columns=['indicator'])
elif (error == True):
df['sma_10_indic'] = pd.DataFrame("ERROR",columns=['indicator'])
Я не уверенна пути вперед я около 14 часов бью головой об стену, и впереди не было четкого пути.Я также попытался создать еще один отдельный фрейм данных и объединить их с помощью concat, но безуспешно из-за логического значения.Я относительно новичок в python и pandas / dataframes, поэтому, пожалуйста, будьте терпеливы со мной.Заранее спасибо!