如何将Fri Apr 01 2022 00:01:00 GMT+0100格式时间转为UTC(Python)
解决方案
首先,你原代码的日期格式字符串匹配错误,且%Z无法正确识别GMT+0100这种带偏移的时区标识,需要调整解析逻辑,同时完成时区转换:
步骤1:正确解析带时区偏移的时间并转换为UTC
可以通过两种方式实现:
方式一:读取后统一处理(更直观)
import pandas as pd # 读取Excel,先将datetime列按字符串读取 ch = pd.read_excel( r'ACEOM2022-04_2022-07.xlsx', skiprows=[1], dtype={'datetime': str} ) # 解析带时区偏移的时间格式,注意格式字符串匹配原始时间结构 ch['datetime'] = pd.to_datetime(ch['datetime'], format="%a %b %d %Y %H:%M:%S GMT%z") # 将带时区的时间转换为UTC ch['datetime'] = ch['datetime'].dt.tz_convert('UTC')
方式二:自定义date_parser在读取时完成转换
import pandas as pd from datetime import datetime, timezone def date_parser(x): # 解析原始时间字符串,%z匹配+0100这种时区偏移 dt = datetime.strptime(x, "%a %b %d %Y %H:%M:%S GMT%z") # 转换为UTC时区 return dt.astimezone(timezone.utc) ch = pd.read_excel( r'ACEOM2022-04_2022-07.xlsx', skiprows=[1], dtype={'datetime': str}, parse_dates=["datetime"], date_parser=date_parser )
步骤2:统一已有UTC格式DataFrame的时间类型
确保你已有的UTC DataFrame的时间列是带时区信息的datetime类型(tz-aware),如果是无时区的naive datetime,需要补全时区信息:
# 假设已有UTC DataFrame名为df_utc,时间列是'datetime' df_utc['datetime'] = pd.to_datetime(df_utc['datetime'], utc=True)
完成以上操作后,两个DataFrame的时间列都会是带UTC时区标识的datetime类型,实现格式统一。
内容的提问来源于stack exchange,提问作者deeksha
相关产品推荐
相关产品推荐

