我正在尝试从具有设置为'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')
添加回答
举报
0/150
提交
取消
