Pandas中将带AM/PM、UTC的无补零日期字符串转为datetime格式
报错原因
你之前传入的格式参数format="%m/%d/%Y %I:%M %p"没有覆盖原始字符串末尾的 UTC固定后缀,同时没有提前清理字符串首尾的冗余空格,导致格式匹配失败。
可直接运行的解决代码
import pandas as pd # 此处为模拟原始数据,实际使用时替换为你从CSV读取到的对应日期列即可 raw_data = [ "10/12/2021 10:25 AM UTC ", "9/28/2021 8:51 AM UTC ", "7/27/2021 9:45 AM UTC ", "2/2/2022 7:10 PM UTC " ] s = pd.Series(raw_data) # 1. 先清理首尾空格,再补全格式参数解析为datetime类型 parsed_dt = pd.to_datetime( s.str.strip(), format="%m/%d/%Y %I:%M %p %Z" ) # 2. 格式化为要求的零填充24小时制字符串,自动移除UTC标识 result = parsed_dt.dt.strftime("%m/%d/%Y %H:%M")
执行后result的输出完全匹配你的预期:
0 10/12/2021 10:25 1 09/28/2021 08:51 2 07/27/2021 09:45 3 02/02/2022 19:10 dtype: object
关键说明
- 解析前调用
.str.strip()是为了清理原始数据里末尾参差不齐的冗余空格,避免空格干扰格式匹配 - 格式串末尾新增的
%Z专门用于匹配字符串末尾的UTC时区标识,补全后即可解决匹配报错问题 - 输出格式化用的
%m(两位月份)、%d(两位日期)、%H(24小时制两位小时)会自动给不足两位的值补前导零,%M(两位分钟)默认带零填充,完全符合你的格式要求
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

