为了账号安全,请及时绑定邮箱和手机立即绑定

本地化没有 DST 转换的 Pandas 时间戳

本地化没有 DST 转换的 Pandas 时间戳

饮歌长啸 2021-12-09 14:35:43
我正在尝试从具有设置为'Australia/Adelaide'时间的系统时钟的设备生成的文件中导入 CSV 数据,但在夏季不会从标准时间切换到夏令时。我可以导入它没问题,tz-naive但我需要将它与tz-aware.以下是不正确的,因为它假设数据在 '2017-10-01' 转换为夏令时data = pd.read_csv('~/dev/datasets/data.csv', parse_dates=['timestamp'], index_col=['timestamp'])data.index.tz_localize('Australia/Adelaide')tz_localize包含许多处理不明确日期的参数 - 但我没有看到任何方法可以告诉它数据根本没有转换。有没有办法指定一个“自定义”时区'Australia/Adelaide', no daylight savings?编辑:我发现了这个问题 -在 pytz 中创建新时区,这给了我一些想法 - 在这种情况下,时间戳是与 UTC 的恒定偏移量,因此我可以将其添加到导入后的日期,本地化为 UTC 然后转换为“澳大利亚” /阿德莱德'。我回来汇报...
查看完整描述

1 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

我想出的解决方案如下:


由于数据是“澳大利亚/阿德莱德”,没有 DLS 转换,这意味着 UTC 偏移量全年都是常数 (+10:30)。因此,解决方案是将该数据导入为tz-naive,减去 10 小时 30 分钟,本地化为 UTC,然后转换为“澳大利亚/阿德莱德”,即


data = pd.read_csv('~/dev/datasets/data.csv', parse_dates=['timestamp'], index_col=['timestamp'])

data.index = data.index - pd.DateOffset(hours=10) - pd.DateOffset(minutes=30)

data.index = data.index.tz_localize('UTC').tz_convert('Australia/Adelaide')


查看完整回答
反对 回复 2021-12-09
  • 1 回答
  • 0 关注
  • 260 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号