Как рассчитать сессионную смену дневных баров

У меня есть DF, который выглядит так:

датаобъемоткрытымЗакрытьвысоконизкийпредыдущее закрытие
2022-05-021756159.0118,38119,57120,34116,49
2022-05-033217838.0119,72122,4123,98119.09119,57
2022-05-042460350.0121,69126,3126,69121,44122,4
2022-05-052123645.0124,62122,15125,21120,8126,3
2022-05-061629034.0120,88121.08121,88118,0122,15
2022-05-091861704.0119,13113.11119,13112,64121.08
2022-05-102141753.0115,44116,64117,94113,14113.11
2022-05-111607013.0115,7113,99118,0113,84116,64
2022-05-121338023.0113,61116,13116,25112,78113,99
2022-05-131328411.0117,38119,38120.715117,27116,13

Я пытаюсь создать столбец, который находит разницу между предыдущим закрытием и открытием:

def get_change(current, previous):
    print(current, 'current')
    print(previous, 'previous')
    if current == previous:
        return 0
    try:
        return (abs(current - previous) / previous) * 100.0
    except ZeroDivisionError:
        return float('inf')

final_df['change'] = get_change(df['o'], final_df['previous close'])

Вот так (где 2 — разница между предыдущим закрытием и открытием):

датаобъемоткрытымЗакрытьвысоконизкийпредыдущее закрытиесдача
2022-05-021756159.0118,38119,57120,34116,492
2022-05-033217838.0119,72122,4123,98119.09119,572
2022-05-042460350.0121,69126,3126,69121,44122,42
2022-05-052123645.0124,62122,15125,21120,8126,32
2022-05-061629034.0120,88121.08121,88118,0122,152
2022-05-091861704.0119,13113.11119,13112,64121.082
2022-05-102141753.0115,44116,64117,94113,14113.112
2022-05-111607013.0115,7113,99118,0113,84116,642
2022-05-121338023.0113,61116,13116,25112,78113,992
2022-05-131328411.0117,38119,38120.715117,27116,132

Как получить значение изменения?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
21
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

IUUC, вы можете сделать

df['change'] = df['open'].sub(df['previous close']).abs().div(df['previous close']).mul(100.0)
print(df)

         date     volume    open   close     high     low  previous close    change
0  2022-05-02  1756159.0  118.38  119.57  120.340  116.49             NaN       NaN
1  2022-05-03  3217838.0  119.72  122.40  123.980  119.09          119.57  0.125450
2  2022-05-04  2460350.0  121.69  126.30  126.690  121.44          122.40  0.580065
3  2022-05-05  2123645.0  124.62  122.15  125.210  120.80          126.30  1.330166
4  2022-05-06  1629034.0  120.88  121.08  121.880  118.00          122.15  1.039705
5  2022-05-09  1861704.0  119.13  113.11  119.130  112.64          121.08  1.610505
6  2022-05-10  2141753.0  115.44  116.64  117.940  113.14          113.11  2.059942
7  2022-05-11  1607013.0  115.70  113.99  118.000  113.84          116.64  0.805898
8  2022-05-12  1338023.0  113.61  116.13  116.250  112.78          113.99  0.333363
9  2022-05-13  1328411.0  117.38  119.38  120.715  117.27          116.13  1.076380

Еще раз спасибо приму через 5 минут, отличных выходных!

A7DC 14.05.2022 20:12

Другие вопросы по теме