【问题标题】:How to convert a string to a time, make it time-zone aware, and convert the timezone in Python?如何将字符串转换为时间,使其具有时区意识,并在 Python 中转换时区?
【发布时间】:2021-05-06 19:02:25
【问题描述】:

我有一个名为“状态日期”的列,其中包含数千个日期,格式如下:

Status Date
01/04/2021-12:21:36

在模式中:

m/d/Y-H:M:S

我需要将此列的所有元素转换为 UTC 中的时区感知 DateTime 对象,然后将时间转换为 UTC-0600(美国/芝加哥)。我试图自己用这个来修复它:

merged['Status Date'] = pd.to_datetime(merged['Status Date'], errors='coerce')
merged['Status Date'] = merged['Status Date'].dt.tz_localize('utc').dt.tz_convert('America/Chicago')

但是,这会忽略我拥有的日期格式并且不会一次读取,而是将所有内容转换为 00:00:00,然后转换为 18:00:00-06:00。当我运行它时,我得到这个输出:

2021-01-03 18:00:00-06:00

忽略时间并将一切从 00:00:00 推迟 6 小时。

任何帮助将不胜感激,我觉得我很接近了。

【问题讨论】:

  • 解析日期时间字符串格式对我来说是开箱即用的;测试pd.Series(pd.to_datetime(["01/04/2021-12:21:36"], utc=True)).dt.tz_convert('America/Chicago')

标签: python pandas datetime timezone pytz


【解决方案1】:

在您的 to_datetime() 创作中试试这个

merged['Status Date'] = pd.to_datetime(merged['Status Date'],
    errors='coerce', format='m/d/Y-H:M:S')

【讨论】:

  • 设置一个特定的格式和 errors=coerce 如果这是一个解析问题会有所帮助,例如,如果有不正确的 H:M:S。
猜你喜欢
  • 2023-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 2013-09-25
  • 2021-08-30
  • 2018-11-13
相关资源
最近更新 更多