如何用Python Pandas将MM/DD/YYYY时间格式转为YYYY-MM-DDThh:mm:ssZ
解决CSV时间格式转换问题
核心错误说明
你之前的代码误用了pd.to_datetime()的format参数:这个参数是用来指定原始时间字符串的格式,而非你想要的输出格式。同时你用了错误的格式符%s(这是Unix时间戳格式,不是秒数),导致解析失败。
正确解决方案
要完成格式转换,需要分两步:先正确解析原始时间字符串为datetime对象,再将datetime对象格式化为目标字符串格式。
完整代码
import pandas as pd # 读取CSV文件 df = pd.read_csv('input.csv', na_filter=False, skiprows=0) # 第一步:解析原始时间格式(MM/DD/YYYY HH:mm) df['datetime'] = pd.to_datetime(df['datetime'], format='%m/%d/%Y %H:%M') # 第二步:格式化为目标格式 YYYY-MM-DDThh:mm:ssZ df['datetime'] = df['datetime'].dt.strftime('%Y-%m-%dT%H:%M:%SZ') print(df)
关键细节解释
解析阶段的format参数:
原始时间格式是12/30/2023 22:13,对应格式符:%m:两位数字的月份(12)%d:两位数字的日期(30)%Y:四位数字的年份(2023)%H:24小时制的两位小时(22)%M:两位数字的分钟(13)
用这个格式解析能确保pandas准确识别时间,避免自动推断出错。
格式化阶段的strftime:
目标格式YYYY-MM-DDThh:mm:ssZ对应:%Y-%m-%d:年-月-日T:分隔日期和时间的固定字符%H:%M:%S:时:分:秒(原始数据无秒,自动补00)Z:表示UTC时区的固定后缀(若你的原始时间是本地时区,需先转换时区再添加Z,否则直接拼接即可)
内容的提问来源于stack exchange,提问作者AliasSyed
相关产品推荐
相关产品推荐

