У меня есть фрейм данных со следующей информацией:
ticker date close gap
0 BHP 1981-07-31 0.945416 -0.199458
1 BHP 1981-08-31 0.919463 -0.235930
2 BHP 1981-09-30 0.760040 -0.434985
3 BHP 1981-10-30 0.711842 -0.509136
4 BHP 1981-11-30 0.778578 -0.428161
.. ... ... ... ...
460 BHP 2019-11-29 38.230000 0.472563
461 BHP 2019-12-31 38.920000 0.463312
462 BHP 2020-01-31 39.400000 0.459691
463 BHP 2020-02-28 33.600000 0.627567
464 BHP 2020-03-31 28.980000 0.784124
Я разработал следующий код, чтобы найти, где находятся строки, когда он пересекает 0:
zero_crossings =np.where(np.diff(np.sign(BHP_data['gap'])))[0]
Это возвращает:
array([ 52, 54, 57, 75, 79, 86, 93, 194, 220, 221, 234, 235, 236,
238, 245, 248, 277, 379, 381, 382, 383, 391, 392, 393, 395, 396],
dtype=int64)
Мне нужно сделать следующее:
- вычислить количество месяцев между точками, где
'gap'
пересекает 0
- удалить элементы где число месяцев составляет
<12
- среднее число оставшихся месяцев
Однако я не знаю, как превратить это nd.array
в нечто полезное, что я могу сделать расчеты от. Когда я пытаюсь:
pd.DataFrame(zero_crossings)
я получаю следующий df, который возвращает только индекс:
0
0 52
1 54
2 57
3 75
4 79
5 86
.. ..
Пожалуйста, помогите ...