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

Python中将带时区的CSV时间戳列转为datetime类型的问题

解决方案:将带时区的时间戳转为datetime类型或去除时区部分

方法1:用Pandas批量转换(推荐,高效)

Pandas自带的to_datetime可以自动识别这种带时区的ISO格式,无需手动编写格式字符串,且支持列级批量操作,比循环逐行处理高效得多:

import pandas as pd

# 将整个timestamps列转为带时区的datetime类型
df_usage['timestamps'] = pd.to_datetime(df_usage['timestamps'])

# 若不需要时区信息,转为无时区的datetime
df_usage['timestamps'] = pd.to_datetime(df_usage['timestamps']).dt.tz_localize(None)

方法2:修正strptime的格式字符串

你之前的报错是因为格式字符串没有匹配时区部分(+00:00),用%z格式符可以匹配这种时区偏移:

import datetime

time = df_usage.iloc[i]['timestamps']  
# 用%z匹配+HH:MM格式的时区偏移
time = datetime.datetime.strptime(time, '%Y-%m-%d %H:%M:%S%z')

# 如需去掉时区,移除tzinfo属性
time = time.replace(tzinfo=None)

方法3:手动截取字符串去除时区部分

如果只需要处理字符串本身,可直接截取或分割掉时区部分:

# 方法A:截取前19个字符(对应"YYYY-MM-DD HH:MM:SS"的长度)
time_str = df_usage.iloc[i]['timestamps'][:19]
time = datetime.datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')

# 方法B:按"+"分割取前半部分
time_str = df_usage.iloc[i]['timestamps'].split('+')[0]
time = datetime.datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:22:14