У меня есть следующий набор данных:
data = {'ROC_9': [0.006250, 0.087230, 0.045028, 0.165738, -0.006993, -0.432736, -0.11162, 0.057466, 0.203138, -0.008234]}
price_data = pd.DataFrame (data)
Это индикатор цены акции, а именно скорости ее изменения.
Я хочу написать код, который создает новую функцию (столбец) во фрейме данных pandas, когда текущая функция во фрейме данных pandas переходит от положительного к отрицательному или наоборот.
Это проще объяснить на примере: воспользуемся функцией ROC9
.
Я создаю новую переменную с именем ROC9_signal
и устанавливаю ее равной 0
:
`price_data['ROC9_signal'] = 0`
Когда ROC_9
изменится с negative
на positive
, я хочу изменить ROC9_signal
с 0
на 1
.
Когда ROC_9
изменится с positive
на negative
, я хочу изменить ROC9_signal
с 0
на -1
.
Глядя на данные, я бы хотел, чтобы ROC9_signal
изменилось с 0
на -1
, поскольку значение изменилось с 0.16
(positive
) на -0.006
(negative
).
Глядя на данные, я бы хотел, чтобы сигнал ROC_9
изменился с 0
на 1
, поскольку значение изменилось с -0.11
(negative
) на 0.05
(positive
).
Глядя на данные, я бы хотел, чтобы ROC9_signal
изменилось с 0
на -1
, поскольку значение изменилось с 0.20
(положительное) на -0.008
(negative
).
Я хочу изменить только строку, в которой происходит изменение, с 0 на 1 или с 0 на -1, остальные строки должны оставаться равными 0.
Затем я применю ту же логику для создания столбца momentum10_signal
и столбца chalkin_money_flow_signal
. Поэтому мне нужно решение, которое можно применять к разным столбцам, а не вручную.
Заранее спасибо за помощь.
Вот как выглядят полные данные: