pandas如何将设为索引的无时区BST时间转换为UTC时间
问题原因
你遇到的报错是因为当前的DateTime索引是*无时区信息(tz-naive)*的时间戳,tz_convert仅支持对已绑定时区的时间戳做时区转换,必须先通过tz_localize标记索引对应的实际时区后才能操作。
实现方案
推荐方案(自动适配夏令时规则)
你提到数据实际存储的是BST(英国夏令时,属于欧洲伦敦时区的夏令时状态),只需要先给索引标记伦敦时区,再转UTC即可自动完成1小时偏移,适配夏令时/冬令时切换节点,不会出现时间重叠或缺失问题,代码如下:
# 1. 给无时区的索引标记实际所属的伦敦时区(自动适配BST夏令时规则) df6.index = df6.index.tz_localize(pytz.timezone('Europe/London')) # 2. 转换为UTC时区,自动完成时区偏移,得到正确的UTC时间 df6.index = df6.index.tz_convert(pytz.timezone('UTC'))
简易方案(强制统一偏移1小时)
如果你的数据全部处于BST时段,不需要考虑夏令时切换,也可以直接用时间增量操作,无需处理时区:
df6.index = df6.index - pd.Timedelta(hours=1)
内容的提问来源于stack exchange,提问作者Sedi
相关产品推荐
相关产品推荐

