0

私はそのように見えるDataFrameを持っています

                 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

この種のデータを次のように変換する方法を探しています

index       open
index+1     low
index+2     high
index+3     open
index+4     low
index+5     high

私のサンプルでは、​​次のようになります

Date
2013-05-07 00:00     112.25000
2013-05-07 08:00     97.52
2013-05-07 16:00     114.00000
2013-05-08 00:00     109.60013
2013-05-08 08:00     109.50
2013-05-08 16:00     116.77700    
...

私の最初のアイデアは、DataFrame をリサンプリングすることです

しかし、私の最初の問題は、私がやっているときです

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します (Mod==0 の場合はオープン、Mod==1 の場合はロー、Mod==2 の場合はハイ)

ModCol列の作成方法がわからない場合の私の問題

4

1 に答える 1

1

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
于 2013-05-13T12:28:43.070 に答える