У меня есть следующий фрейм данных, который состоит из трех столбцов: значения, cumsum, ema.
import pandas as pd
import numpy as np
col_values = [-36.0,
1.5,
-13.200000000000273,
32.79999999999973,
11.69999999999959,
31.59999999999991,
52.0,
-1.1999999999995907,
52.0,
-105.29999999999973,
-3.299999999999727,
-14.100000000000136,
9.599999999999454,
-90.89999999999986,
0.0,
33.40000000000009,
-12.900000000000546,
39.09999999999991,
32.80000000000018,
15.299999999999727,
-33.0,
-15.599999999999454,
11.700000000000273,
12.600000000000136,
-6.0]
col_cumsum = [1717.6999999999982,
1719.1999999999982,
1705.999999999998,
1738.7999999999977,
1750.4999999999973,
1782.0999999999972,
1834.0999999999972,
1832.8999999999976,
1884.8999999999976,
1779.5999999999979,
1776.2999999999981,
1762.199999999998,
1771.7999999999975,
1680.8999999999976,
1680.8999999999976,
1714.2999999999977,
1701.3999999999971,
1740.499999999997,
1773.2999999999972,
1788.599999999997,
1755.599999999997,
1739.9999999999975,
1751.6999999999978,
1764.299999999998,
1758.299999999998]
col_ema = [1754.3539071732214,
1751.0059160138665,
1746.71963829826,
1745.965387031759,
1746.3972549334958,
1749.7975163684007,
1757.8263243333147,
1764.9761982063321,
1776.3975126628718,
1776.702511456884,
1776.6641770324188,
1775.2866363626642,
1774.9545757566962,
1765.9969971132011,
1757.892521197658,
1753.7408525121668,
1748.75600941577,
1747.969722804744,
1750.3821301566725,
1754.0219272846084,
1754.1722199241694,
1752.8224846932958,
1752.7155813891723,
1753.8188593521081,
1754.2456346519073]
df1 = pd.DataFrame({'values': col_values, 'cumsum': col_cumsum, 'ema': col_ema})
df1.head(50)
Я хочу создать новый столбец, который добавляет кумулятивный столбец «значения», если в предыдущей строке значение «cumsum» равно или больше, чем «ema».
Я пробовал это:
df1['equity_cond'] = np.where(df1['cumsum'].shift(1)>=df1['ema'].shift(1), df1['equity_cond'].shift(1) + df1['values'], df1['equity_cond'].shift(1))
, которая генерирует следующую ошибку:
KeyError: 'equity_cond'
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
<ipython-input-25-1c89c1e1113c> in <module>
----> 2 df1['equity_cond'] = np.where(df1['cumsum'].shift(1)>=df1['ema'].shift(1), df1['equity_cond'].shift(1) + df1['values'], df1['equity_cond'].shift(1))
Как это можно реализовать в Pandas?
Отредактировано:
Ожидаемые значения для этого нового столбца:
0
0
0
0
0
31.6
83.6
…