0

我有一个 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 中的第一分钟(这是星期天的一周开始)自动开始,并以相同的模式继续,直到遇到另一个开始,依此类推。

4

1 回答 1

0

我想出了一个简单的解决方案,即本地化时间,重新采样,然后再次更改为 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')
于 2020-10-18T16:27:24.463 回答