从pandas数据帧数组中检索[数组值]数组作为numpy数组[示例内部]

时间:2017-07-20 12:39:21

标签: python arrays pandas numpy data-science

我有一堆形式的时间序列数据(股票):

      DateTime                  open    high    low close   volume
0     2017-01-02 09:15:00+05:30 8210.10 8211.70 8189.00 8189.55 0
1     2017-01-02 09:16:00+05:30 8188.75 8193.95 8188.75 8189.95 0
2     2017-01-02 09:17:00+05:30 8190.15 8190.75 8173.70 8173.70 0
....
38939 2017-06-01 15:01:00+05:30 9616.45 9617.30 9615.30 9615.85 0

我正在尝试将数据分组:

  • 每59分钟的数据进入一个新阵列
  • 第60分钟进入新阵列

我的想法是,我将使用每59分钟的数据来预测第60分钟的数据。我已经实现了执行此操作的代码,但是我认为我没有以最佳方式完成它,因为现在,我为每1:59分钟的数据和每60分钟的数据帧提供一系列pandas数据帧。每59分钟的数据我的结果如下所示。它是一个名为predictors的pandas数据框列表:

[                    DateTime   open   high    low  close  volume
 0  2017-01-02 09:15:00+05:30  42.10  42.10  41.75  41.85    3650
 1  2017-01-02 09:16:00+05:30  41.85  41.95  41.75  41.95    1573
 2  2017-01-02 09:17:00+05:30  41.95  41.95  41.55  41.55     525
 3  2017-01-02 09:18:00+05:30  41.55  41.55  41.30  41.45    3938
 4  2017-01-02 09:19:00+05:30  41.45  41.60  41.45  41.60     320
 5  2017-01-02 09:20:00+05:30  41.60  41.60  41.60  41.60       0
 ...
 58 2017-01-02 10:13:00+05:30  41.25  41.25  41.25  41.25       0,
                      DateTime   open   high    low  close  volume
 60  2017-01-02 10:15:00+05:30  41.15  41.25  41.15  41.25     100
 61  2017-01-02 10:16:00+05:30  41.25  41.25  41.25  41.25       0
 62  2017-01-02 10:17:00+05:30  41.25  41.40  41.25  41.35    1623
...
 117  2017-01-02 10:23:00+05:30  41.60  41.60  41.60  41.60       0
 118  2017-01-02 10:24:00+05:30  41.60  41.60  41.40  41.40       9
... ]

每隔60分钟的数据就是一个名为predictee的数据框:

DateTime    open    high    low close   volume
59  2017-01-02 10:14:00+05:30   41.25   41.25   41.15   41.15   2000
119 2017-01-02 11:14:00+05:30   41.15   41.15   41.15   41.15   0
179 2017-01-02 12:14:00+05:30   41.35   41.35   41.35   41.35   530

现在,我想从预测变量列表中的每个pandas数据帧中检索“close”。它的伪代码现在看起来如下

for each_df in predictors:
    closeCol = 'close' column as an numpy array
    append closeCol to a new array as an array

这会给我一个新的numpy数组。然而,这个解决方案似乎不是最优的,我想知道我是否做错了什么或者可以做得更好。问题是:这是以我想要的格式存储数据的最佳方式吗?如果是,是否有更优化的方法来获取predictors数组中的关闭列?

我知道这是一个很长的问题,所以如果需要任何澄清或细节,请告诉我。

1 个答案:

答案 0 :(得分:0)

也许您应该使用groupby。创建一个列'小时'像这样代表小时:

hour_col = df[DateTime].apply(lambda x : datetime.datetime(year=x.year,month=x.month,day=x.day,hour=x.hour))

df_new = df.assign(hour = hour_col)

然后按小时分组:

groups = df_new.groupby('hour')

结果是一个groupby对象,您可以从中访问每小时的数据帧。然后,您可以根据需要查看每个组中的最后一分钟。