Python如何将pandas无日期的时间列舍入到最近的秒
错误原因
你指定的转换格式%H:%M:%S仅匹配到秒级别,无法适配部分行末尾的.600000类微秒后缀,因此触发未转换数据残留的报错。
调整方案
1. 修正时间转换逻辑
两种适配带/不带微秒的时间字符串的写法可选:
- 写法一:明确指定格式,开启非严格匹配兼容无微秒的行
trip_28["time"] = pd.to_datetime(trip_28["time"], format="%H:%M:%S.%f", exact=False)
- 写法二:不指定格式,让pandas自动推断,适配性更强
trip_28["time"] = pd.to_datetime(trip_28["time"])
2. 调整舍入逻辑
你示例中16:19:01.6转成16:19:02是四舍五入效果,原来的floor是向下取整,需要改成round,最后追加.dt.time去掉自动补全的日期前缀,仅保留时间部分:
# 四舍五入到秒,输出纯时间格式 trip_28["time"] = trip_28["time"].dt.round('1s').dt.time
效果验证
转换后结果和你预期完全一致:
16:19:01.600000→16:19:0216:20:02.700000→16:20:0316:20:18→16:20:18
内容的提问来源于stack exchange,提问作者Joehat
相关产品推荐
相关产品推荐

