1

我有一个带有高频(秒或分钟)股票数据的熊猫数据框。

e.g. 
                           Date      Time     Open  ...      Low    Close  Volume
DT                                                  ...                          
2020-10-09 09:30:00  10/09/2020  09:30:00  3432.50  ...  3432.25  3432.50      37
2020-10-09 09:30:01  10/09/2020  09:30:01  3432.50  ...  3432.25  3432.50       8
2020-10-09 09:30:02  10/09/2020  09:30:02  3432.50  ...  3432.25  3432.50      11
2020-10-09 09:30:03  10/09/2020  09:30:03  3432.25  ...  3432.25  3432.50      11
2020-10-09 09:30:04  10/09/2020  09:30:04  3432.25  ...  3432.25  3432.75     134
                        ...       ...      ...  ...      ...      ...     ...
2020-10-14 15:59:53  10/14/2020  15:59:53  3461.25  ...  3461.25  3461.50      59
2020-10-14 15:59:56  10/14/2020  15:59:56  3461.50  ...  3461.25  3461.50      61
2020-10-14 15:59:57  10/14/2020  15:59:57  3461.25  ...  3461.00  3461.75      54
2020-10-14 15:59:58  10/14/2020  15:59:58  3461.50  ...  3461.50  3461.50      25
2020-10-14 15:59:59  10/14/2020  15:59:59  3461.50  ...  3461.50  3461.75      16

我可以轻松地将这些数据重新采样为平均细分为 24 小时(或 1440 分钟/天)的分钟周期。

rule = '60T'
 df = df.resample(rule, closed='right', label='right').agg(
    {'Open': 'first',
     'High': 'max',
     'Low': 'min',
     'Close': 'last',
     'Volume': 'sum'
     }).dropna()

您如何在每天 1440 分钟的时间段内执行此操作?例如规则 = '65T'

典型的美国股票数据从东部时间 9:30 到 16:00。对于 65 分钟的条形图,我希望重新采样以下时间段:

09:30-10:35
10:35-11:40
11:40-12:45
12:45-13:50
13:50-14:55
14:55-16:00
4

1 回答 1

0

我们可以resample 通过将可选参数设置为origin日期时间索引中的起始值DT

从文档是resample origin

调整分组的时间戳。原始时区必须与索引的时区匹配。

因此,为了调整分组开始,9:30我们将 origin 的值设置为日期时间索引中的起始时间戳,即2020-10-09 09:30:00

除此之外,我们还需要将可选参数的值设置closedleftlabelleft

d = {'Open': 'first', 'High': 'max', 'Low': 'min',
     'Close': 'last', 'Volume': 'sum'}

df.resample(rule='65T', 
            closed='left', label='left',
            origin=df.index.min()).agg(d).dropna()

示例输出(仅用于说明)

                       Open    High      Low   Close  Volume
DT                                                          
2020-10-09 09:30:00  3432.5  3432.5  3432.25  3432.5  2405.0 # 09:30-10:35
2020-10-09 10:35:00  3432.5  3432.5  3432.25  3432.5  2405.0 # 10:35-11:40
2020-10-09 11:40:00  3432.5  3432.5  3432.25  3432.5  2405.0 # 11:40-12:45
2020-10-09 12:45:00  3432.5  3432.5  3432.25  3432.5  2405.0 # 12:45-13:50
2020-10-09 13:50:00  3432.5  3432.5  3432.25  3432.5  2405.0 # 13:50-14:55
2020-10-09 14:55:00  3432.5  3432.5  3432.25  3432.5  2405.0 # 14:55-16:00
于 2021-04-17T12:41:41.843 回答