首页 > 解决方案 > 尝试将 CSV 文件中的列从 UTC 时间转换为美国/太平洋时间

问题描述

因此,我的任务是读取 CSV 文件并将发送电子邮件的时间列转换为新时区(从 UTC 到太平洋 df_emails = df_emails.EmailSentDateTimeUtc.dt.tz_localize('US/Eastern', ambiguous='infer') ) ambiguous 设置为 true 以及 raise,“EmailSentDateTimeUtc”列已转换为 datetime64[ns] 我试图本地化到东部,然后转换为太平洋。

该代码引发的错误是 AmbiguousTimeError: 2018-11-04 01:58:16.743000

在这里慢慢失去理智,非常感谢任何帮助!

标签: pythonpandastimetimezone

解决方案


如果您读取 UTC 格式的日期/时间数据,您应该在导入 / 从字符串转换为日期时间数据类型时指定。然后转换到另一个时区不会导致任何错误。

前任:

import pandas as pd

df_emails = pd.DataFrame({"EmailSentDateTimeUtc": ["2018-11-04 01:58:16.743000"]})

# to datetime, and specifiy that input is UTC
df_emails.EmailSentDateTimeUtc = pd.to_datetime(df_emails.EmailSentDateTimeUtc, utc=True)

# now you can convert easily like
df_emails.EmailSentDateTimeUtc = df_emails.EmailSentDateTimeUtc.dt.tz_convert('US/Eastern')

# df_emails
#               EmailSentDateTimeUtc
# 0 2018-11-03 21:58:16.743000-04:00

推荐阅读