US/Eastern时区下使用groupby按24h偏移9:30分组输出错误如何解决
问题原因
- 核心诱因是2018年3月11日为美国东部时区的夏令时切换节点:US/Eastern时区在当日凌晨2点会直接跳转至3点,当日自然时长仅为23小时,使用固定24小时时长的分组规则,跨夏令时切换日时就会出现时间偏移。
pd.Grouper中freq='24h'对应的是固定绝对时长的频率,不会跟随本地时区的时令变化做调整,跨夏令时/冬令时切换日时,24小时绝对时长对应到本地时区的时间跨度会变为23小时或25小时,最终导致分组结束时间不符合预期。
修复方案
将freq参数从固定时长的24h替换为适配本地日历的日频率标识D即可,freq='D'会自动适配时区的时令切换逻辑,结合设置的offset偏移量按自然日的9:30作为分组起止点:
# 修改后的分组代码 output = list(data.groupby(pd.Grouper(key='EST_time', freq='D', offset = '9:30:00')))
修改后第二个分组的结束时间会变为预期的2018-03-11 09:30:00-04:00,符合分组规则要求。
内容的提问来源于stack exchange,提问作者Eghbal
相关产品推荐
相关产品推荐

