如何根据夏令时更改 pandas 对 UTC OHLC 时间序列的重采样

How to change pandas resampling on a UTC OHLC Time Series based on Daylight Saving

我有一个 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')