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

如何解决使用pd.to_datetime转换含AM/PM的DataFrame时间列报错问题

解决DataFrame时间列转换为日期类型的报错问题

嘿,这个问题我之前也碰到过!报错的原因很简单——你在pd.to_datetime的format参数里没包含时间字符串里的AM/PM标识,所以Python没办法处理这部分多余的内容,就抛出了ValueError。

问题分析

你的时间字符串格式是9:39:02 AM,包含了12小时制的时段标识(AM/PM),而你用的format='%I:%M:%S'只能匹配小时:分钟:秒的部分,完全没考虑后面的AM/PM,自然会提示“有未转换的数据残留”。

修正后的代码

只需要在format里加上%p(专门匹配12小时制的AM/PM标识)就可以了,代码如下:

dropped_col['time'] = pd.to_datetime(dropped_col.time, format='%I:%M:%S %p')

额外说明

  • 转换完成后,这个列会变成datetime64类型,包含日期(默认是当前系统日期)和时间。如果之后你只需要单独提取时间部分,可以用:
    dropped_col['time_only'] = dropped_col['time'].dt.time
    
  • 这个转换后的datetime类型完全可以直接用于绘图(比如时间序列图)和统计函数,pandas会自动识别并处理。

验证效果

转换后的DataFrame会是这样的(日期为转换当天的日期):

symbolpricetime
MSFT97.71202X-XX-XX 09:39:02
GOOG1067.87202X-XX-XX 09:39:06
AAPL187.61202X-XX-XX 09:39:07
CA35.39202X-XX-XX 09:38:15
SAP110.76202X-XX-XX 09:38:13

内容的提问来源于stack exchange,提问作者Ann Kriebel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:35:00