You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析含多时区的DataFrame对象索引为日期、时间及时区

如何将DataFrame中的对象索引解析为日期、时间和时区信息?

索引格式为YYYY-MM-DD HH:MM:SS-HH:MM,右侧的HH:MM代表时区。示例(2020年1月1日山区时间零点起的时间序列):

2020-01-01 00:00:00-07:00
2020-01-01 01:00:00-07:00
2020-01-01 02:00:00-07:00
2020-01-01 04:00:00-06:00

现有代码仅支持单时区场景,引入第二个时区时触发报错:

df['Date'] = pd.to_datetime(df.index)
df['year']= df['Date'].dt.year
df['month']= df['Date'].dt.month
df['month_n']= df['Date'].dt.month_name()
df['day']= df['Date'].dt.day
df['day_n']= df['Date'].dt.day_name()
df['h']= df['Date'].dt.hour
df['mn']= df['Date'].dt.minute
df['s']= df['Date'].dt.second

报错信息:

ValueError: 带时区的datetime.datetime无法转换为datetime64,除非指定utc="True"


解决方法

方法1:统一转换为UTC时区解析

在pd.to_datetime中指定utc=True,将所有带时区的时间转换为UTC标准时间,即可正常提取各类日期时间字段,同时可额外提取原时区标识:

# 解析索引为UTC时区的datetime列
df['Date'] = pd.to_datetime(df.index, utc=True)

# 提取日期时间各字段
df['year'] = df['Date'].dt.year
df['month'] = df['Date'].dt.month
df['month_n'] = df['Date'].dt.month_name()
df['day'] = df['Date'].dt.day
df['day_n'] = df['Date'].dt.day_name()
df['h'] = df['Date'].dt.hour
df['mn'] = df['Date'].dt.minute
df['s'] = df['Date'].dt.second
# 提取原始时区信息
df['original_timezone'] = df.index.str.extract(r'([+-]\d{2}:\d{2})$')[0]

方法2:保留原始时区的本地化处理

如果需要保留每个时间点的原始时区,可将索引转换为带时区的datetime.datetime对象列表,通过遍历提取字段(因为pandas不支持混合时区的datetime64列):

# 将索引转为带时区的datetime对象列表
date_objs = pd.to_datetime(df.index).tolist()

# 遍历提取各字段
df['year'] = [dt.year for dt in date_objs]
df['month'] = [dt.month for dt in date_objs]
df['month_n'] = [dt.strftime('%B') for dt in date_objs]
df['day'] = [dt.day for dt in date_objs]
df['day_n'] = [dt.strftime('%A') for dt in date_objs]
df['h'] = [dt.hour for dt in date_objs]
df['mn'] = [dt.minute for dt in date_objs]
df['s'] = [dt.second for dt in date_objs]
df['timezone'] = [dt.tzname() for dt in date_objs]

报错原因

当索引包含多个不同时区的时间戳时,pd.to_datetime(df.index)会生成带时区的datetime对象数组,但pandas的datetime64列无法存储混合时区数据,必须统一转换为UTC时区(指定utc=True),或用object类型存储单个带时区的datetime对象。

内容的提问来源于stack exchange,提问作者db2016

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:35:26