pandas中pd.to_datetime的format参数如何指定带+2时区偏移的格式
解决方案
你需要在format参数中补充秒的匹配规则%S,以及专门匹配时区偏移的格式符%z,完整匹配规则如下:
%Y-%m-%d %H:%M:%S%z
其中%z是Python datetime模块提供的格式符,专门用于匹配±HH:MM格式的UTC时区偏移。
修正后的代码示例
import pandas as pd date = ['2015-02-03 21:00:00+02:00','2015-02-03 22:30:00+02:00','2016-02-03 21:00:00+02:00','2016-02-03 22:00:00+02:00'] value_column = [33.24 , 500 , 34.39 , 34.49 ] # 先统一处理日期字符串中多余的空格,避免格式匹配失败 clean_date_list = [' '.join(i.split()) for i in date] df = pd.DataFrame( {'V1': value_column}, index=pd.to_datetime(clean_date_list, format='%Y-%m-%d %H:%M:%S%z') ) print(df.head())
补充说明
- 你当前未补全格式的写法虽然在测试场景下没有报错,但本质是pandas自动忽略了未匹配的后缀部分,遇到非标准格式的日期时很容易出现转换错误,生产环境建议使用精准匹配规则。
- 如果不想手动指定格式,也可以直接省略
format参数,pandas可以自动识别这类符合ISO标准的带时区日期字符串,不过手动指定格式的转换效率更高,更适合大数据量场景。
内容的提问来源于stack exchange,提问作者Peslier53
相关产品推荐
相关产品推荐

