【问题标题】:pytz - convert a datetime in the future to UTCpytz - 将未来的日期时间转换为 UTC
【发布时间】:2016-10-05 19:15:42
【问题描述】:

我有一个文件,其中包含未来两周的预测事件。有一个包含日期和每 30 分钟间隔的 datetime 列,以及一个 time zone 列。

我正在使用 pytz 将不同的时区(大约 30 多个唯一的时区)转换为 UTC,然后再将它们加载到数据库中。但是,对于预测文件,我收到一个错误:

NonExistentTimeError: 2016-10-16 00:00:00

有没有办法解决这个问题?

date    interval    time_zone
10/26/2016  22:30   US/Central
10/26/2016  22:30   US/Eastern
10/26/2016  23:00   America/Bogota
10/26/2016  23:00   Asia/Calcutta

当前代码:

for tz in df['time_zone'].unique():
    df.loc[df['time_zone'] == tz, 'datetime_utc'] = df.loc[df['time_zone'] == tz, 'datetime'].dt.tz_localize(tz).dt.tz_convert('UTC')
df['datetime_utc'] = df['datetime_utc'].dt.tz_localize(None)

【问题讨论】:

  • 哪个时区失败了?
  • 啊,这是在我读取数据(方法链接)时完成的,所以我认为它适用于任何值。我查了那个日期并用谷歌搜索,我把它缩小到巴西。 tz = '巴西/东部' df3.loc[df3['time_zone'] == tz, 'datetime_utc'] = df3.loc[df3['time_zone'] == tz, 'datetime'].dt.tz_localize(tz ).dt.tz_convert('UTC')

标签: pandas pytz


【解决方案1】:

由于changes in daylight saving happening on the 16th October,2016-10-16 00:00:00 确实是巴西不存在的当地时间(应该改为 2016-10-16 01:00:00)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 2014-10-05
    • 2011-01-06
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多