如何基于夏令时在UTC OHLC时间序列上更改熊猫重采样

问题描述

我有一个1分钟的OHLC CSV文件,其日期使用 UTC

df = pd.read_csv('...',usecols=['Date','Open','High','Low','Close'],index_col=['Date'],parse_dates=['Date'])

我正在使用以下方法重新采样

ohlc_head = {'Open':'first','High':'max','Low':'min','Close': 'last'}
df_resamples = df.resample('4h',base=21).agg(ohlc_head).dropna(how='any')

此操作将从周日21:00开始重新采样,因此为21:00、01:00、05:00,...,直到周五17:00 21:00 UTC是市场开放时间。

但是,如果设置了夏令时,则每周的第一分钟从星期日22:00开始,直到18:00结束。

如何在周日的第一分钟从22:00开始将重采样设置为22:00,而周日的第一分钟从21:00开始将重采样设置为21:00? 简而言之,重采样应在CSV的第一分钟(星期日的一周中的开始时间)自动开始,并以相同的方式继续进行,直到遇到另一个开始,依此类推。

解决方法

我想出了一个简单的解决方案,即定位时间,重新采样,然后再次更改为UTC:

df.index = df.index.tz_localize('UTC').tz_convert('Europe/London')
ohlc_dict = {'Open':'first','High':'max','Low':'min','Close': 'last'}
df = df.resample('4h',base=21).agg(ohlc_dict).dropna(how='any')
df.index = df.index.tz_convert('UTC')

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...