将带有indexOHLC数据的数据帧转换为indexO indexL indexH indexO(展平OHLC数据)

2024-05-17 02:53:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个像这样的数据帧

                 Open       High     Low      Close   Volume (BTC)  Volume (Currency)  Weighted Price
Date                                                                                                 
2013-05-07  112.25000  114.00000   97.52  109.60013  139626.724860    14898971.673747      106.705731
2013-05-08  109.60013  116.77700  109.50  113.20000   61680.324704     6990518.957611      113.334665
2013-05-09  113.20000  113.71852  108.80  112.79900   26894.458204     3003068.410660      111.661235
2013-05-10  112.79900  122.50000  111.54  117.70000   77443.672681     9140709.083964      118.030418
2013-05-11  117.70000  118.74000  113.00  113.47000   25532.277740     2952016.798507      115.619015

我在寻找一种数据转换的方法

^{pr2}$

所以在我的样本中应该是

^{3}$

我的第一个想法是重新采样数据帧

但我的第一个问题是

df2 = df.resample('8H', how='mean')

我明白了

                          Open       High        Low      Close   Volume (BTC)  Volume (Currency)  Weighted Price

2013-05-07 00:00:00  112.25000  114.00000   97.52000  109.60013  139626.724860    14898971.673747      106.705731
2013-05-07 08:00:00        NaN        NaN        NaN        NaN            NaN                NaN             NaN
2013-05-07 16:00:00        NaN        NaN        NaN        NaN            NaN                NaN             NaN
2013-05-08 00:00:00  109.60013  116.77700  109.50000  113.20000   61680.324704     6990518.957611      113.334665
2013-05-08 08:00:00        NaN        NaN        NaN        NaN            NaN                NaN             NaN
2013-05-08 16:00:00        NaN        NaN        NaN        NaN            NaN                NaN             NaN
2013-05-09 00:00:00  113.20000  113.71852  108.80000  112.79900   26894.458204     3003068.410660      111.661235
...

我现在需要用模3值构建一个列

像这样

                        ModCol 

2013-05-07 00:00:00          0 
2013-05-07 08:00:00          1 
2013-05-07 16:00:00          2 
2013-05-08 00:00:00          0 
2013-05-08 08:00:00          1 
2013-05-08 16:00:00          2 
2013-05-09 00:00:00          3 
...

所以我将使用np.where来生成price列 (Mod==0时打开,Mod==1时低,Mod==2时高)

我的问题是如果我不知道如何构建ModCol列


Tags: 数据方法modclosedateopennanprice
1条回答
网友
1楼 · 发布于 2024-05-17 02:53:25

下面是如何创建mod列

In [1]: Series(range(10))
Out[1]: 
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
dtype: int64

In [2]: Series(range(10)) % 3
Out[2]: 
0    0
1    1
2    2
3    0
4    1
5    2
6    0
7    1
8    2
9    0
dtype: int64

相关问题 更多 >