如何从OHLC数据计算枢轴值

时间:2019-05-20 07:03:45

标签: python-3.x pandas pivot finance technical-indicator

我有一个包含open,high,low,close和key列的熊猫数据集。现在,我想按键对数据集进行分组,并使用公式-(高+低+闭合)/ 3计算枢轴。到目前为止,我已经能够做到。但是要求是将计算出的数据移到我无法编码的下一组。

我能够按关键列对数据集进行分组,并且能够计算数据透视表数据。

import pandas as pd
data = pd.DataFrame([[110, 115, 105, 111, 1],[11, 16, 6, 12, 1],[12, 17, 7, 13, 1],[12, 16, 6, 11, 2],[9, 13, 4, 13, 2],[13, 18, 9, 12, 3],[14, 16, 10, 13, 3]], columns=["open","high","low","close","key"])
data['p'] = (data.high.groupby(data.key).transform('max') + data.low.groupby(data.key).transform('min') + data.close.groupby(data.key).transform('last')) / 3
print(data)

当前我的输出低于输出。

   open  high  low  close  key      p
0   110   115  105    111    1  44.666667
1    11    16    6     12    1  44.666667
2    12    17    7     13    1  44.666667
3    12    16    6     11    2  11.000000
4     9    13    4     13    2  11.000000
5    13    18    9     12    3  13.333333
6    14    16   10     13    3  13.333333

但是将值转移到下一组后,预期输出应如下所述。

   open  high  low  close  key      p
0   110   115  105    111    1     NaN
1    11    16    6     12    1     NaN
2    12    17    7     13    1     NaN
3    12    16    6     11    2  44.666667
4     9    13    4     13    2  44.666667
5    13    18    9     12    3  11.000000
6    14    16   10     13    3  11.000000

1 个答案:

答案 0 :(得分:0)

相反,将3个角钱分组使用GroupBy.agg和字典,然后每行sum个值并除以3。最后对新列使用Series.map个具有Series.shift ed的值:

s = data.groupby('key').agg({'low':'min','high':'max','close':'last'}).sum(axis=1) / 3

data['s'] = data['key'].map(s.shift())
print(data)
   open  high  low  close  key          s
0   110   115  105    111    1        NaN
1    11    16    6     12    1        NaN
2    12    17    7     13    1        NaN
3    12    16    6     11    2  44.666667
4     9    13    4     13    2  44.666667
5    13    18    9     12    3  11.000000
6    14    16   10     13    3  11.000000