У меня есть DF, который выглядит так:
| дата | объем | открытым | Закрыть | высоко | низкий | предыдущее закрытие |
|---|---|---|---|---|---|---|
| 2022-05-02 | 1756159.0 | 118,38 | 119,57 | 120,34 | 116,49 | |
| 2022-05-03 | 3217838.0 | 119,72 | 122,4 | 123,98 | 119.09 | 119,57 |
| 2022-05-04 | 2460350.0 | 121,69 | 126,3 | 126,69 | 121,44 | 122,4 |
| 2022-05-05 | 2123645.0 | 124,62 | 122,15 | 125,21 | 120,8 | 126,3 |
| 2022-05-06 | 1629034.0 | 120,88 | 121.08 | 121,88 | 118,0 | 122,15 |
| 2022-05-09 | 1861704.0 | 119,13 | 113.11 | 119,13 | 112,64 | 121.08 |
| 2022-05-10 | 2141753.0 | 115,44 | 116,64 | 117,94 | 113,14 | 113.11 |
| 2022-05-11 | 1607013.0 | 115,7 | 113,99 | 118,0 | 113,84 | 116,64 |
| 2022-05-12 | 1338023.0 | 113,61 | 116,13 | 116,25 | 112,78 | 113,99 |
| 2022-05-13 | 1328411.0 | 117,38 | 119,38 | 120.715 | 117,27 | 116,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-02 | 1756159.0 | 118,38 | 119,57 | 120,34 | 116,49 | 2 | |
| 2022-05-03 | 3217838.0 | 119,72 | 122,4 | 123,98 | 119.09 | 119,57 | 2 |
| 2022-05-04 | 2460350.0 | 121,69 | 126,3 | 126,69 | 121,44 | 122,4 | 2 |
| 2022-05-05 | 2123645.0 | 124,62 | 122,15 | 125,21 | 120,8 | 126,3 | 2 |
| 2022-05-06 | 1629034.0 | 120,88 | 121.08 | 121,88 | 118,0 | 122,15 | 2 |
| 2022-05-09 | 1861704.0 | 119,13 | 113.11 | 119,13 | 112,64 | 121.08 | 2 |
| 2022-05-10 | 2141753.0 | 115,44 | 116,64 | 117,94 | 113,14 | 113.11 | 2 |
| 2022-05-11 | 1607013.0 | 115,7 | 113,99 | 118,0 | 113,84 | 116,64 | 2 |
| 2022-05-12 | 1338023.0 | 113,61 | 116,13 | 116,25 | 112,78 | 113,99 | 2 |
| 2022-05-13 | 1328411.0 | 117,38 | 119,38 | 120.715 | 117,27 | 116,13 | 2 |
Как получить значение изменения?






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 минут, отличных выходных!