如何在Python中将GMT-3字符串列转换为EST日期时间列?
将GMT-3时区字符串转换为EST时区的Pandas处理方案
步骤1:准备示例数据
先创建包含目标时间列的DataFrame:
import pandas as pd time_list = ['8:00PM GMT-3', '9:00PM GMT-3', '11:00PM GMT-3', '11:00PM GMT-3', '9:00PM GMT-3', '11:00PM GMT-3', '8:00PM GMT-3', '8:30PM GMT-3', '10:30PM GMT-3', '2:00PM GMT-3'] df = pd.DataFrame({'raw_time': time_list})
步骤2:解析为带GMT-3时区的datetime对象
原字符串中的GMT-3等价于UTC-3,可通过两种方式将object类型转换为时区感知的datetime:
方法A:替换时区标识后自动解析
# 替换GMT-3为UTC-3,让pandas自动识别时区 df['utc3_time'] = pd.to_datetime(df['raw_time'].str.replace('GMT-3', 'UTC-3'), infer_datetime_format=True)
方法B:提取时间部分后手动绑定时区
如果担心自动解析出错,可拆分字符串提取纯时间后指定时区:
# 拆分字符串提取时间部分,按格式解析后绑定UTC-3时区 df['utc3_time'] = pd.to_datetime(df['raw_time'].str.split(' ', expand=True)[0], format='%I:%M%p').dt.tz_localize('UTC-3')
步骤3:转换为EST时区
EST对应的IANA标准时区是US/Eastern(会自动处理夏令时,在EST和EDT之间切换);如果需要固定使用UTC-5偏移的标准时间(不考虑夏令时),可以用Etc/GMT+5:
# 转换为自动识别夏令时的美国东部时区 df['est_time'] = df['utc3_time'].dt.tz_convert('US/Eastern') # (可选)强制使用固定UTC-5偏移的EST(不切换夏令时) # df['est_time'] = df['utc3_time'].dt.tz_convert('Etc/GMT+5')
验证结果
转换后可查看结果,例如原8:00PM GMT-3会转换为6:00PM EST(UTC-3比UTC-5早2小时,需减去2小时)。
内容的提问来源于stack exchange,提问作者dcoolwater0502
相关产品推荐
相关产品推荐

