如何解决Python 熊猫重新采样到不细分为 24 小时周期的周期
我有一个包含高频(秒或分钟)股票数据的 Pandas 数据框。
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
解决方法
我们可以通过将可选参数 origin
设置为日期时间索引 DT
中的起始值来resample
来自 resample
origin
的文档是
调整分组的时间戳。起源时区 必须与索引的时区匹配。
因此为了调整分组从 9:30
开始,我们将 origin 的值设置为日期时间索引中的起始时间戳,即 2020-10-09 09:30:00
除此之外,我们还需要将可选参数closed
的值设置为left
,将label
的值设置为left
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。