Python中如何将字符串时间列转为DateTime格式?
解决字符串转DateTime的格式匹配问题
问题根源
你遇到的ValueError是因为格式字符串和实际数据不匹配:
- 年份部分:你用了
%y(匹配两位年份,比如22),但数据里是四位年份2022,应该用%Y; - 时间部分:数据只有
时:分(比如08:01),但格式字符串写了%H:%M:%S(要求时分秒),多余的秒数格式导致匹配失败; - 额外问题:不需要手动循环遍历DataFrame列,pandas支持直接对整列做批量转换,效率更高。
解决方法
方法1:指定正确的格式字符串
直接匹配数据的日/月/年 时:分格式:
df['Arrive time'] = pd.to_datetime(df['Arrive time'], format='%d/%m/%Y %H:%M')
方法2:让pandas自动推断格式(更灵活)
如果数据格式偶尔有变动,去掉format参数,加上dayfirst=True确保日在前的日期被正确解析:
df['Arrive time'] = pd.to_datetime(df['Arrive time'], dayfirst=True)
补充说明
关于原CSV有秒但DataFrame不显示的问题:这大概率是pandas的显示设置导致的,实际数据可能仍然包含秒信息。如果需要保留秒,可以先检查原始数据的真实格式,再调整格式字符串(比如如果原始数据是28/11/2022 08:01:00,就用%d/%m/%Y %H:%M:%S)。
内容的提问来源于stack exchange,提问作者Felipe Abrão Mariotti
相关产品推荐
相关产品推荐

