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

将DataFrame列转换为datetime格式时出现格式匹配错误

解决DataFrame中Time列转datetime格式的问题

我来帮你搞定这个时间转换的坑!你遇到的错误根源在于Time列的数值类型和字符串格式不匹配:你的Time是float类型,当直接传给pd.to_datetime时,像132550.0这样的数值会被转换成字符串'132550'(丢失了小数部分),或者'132550.0',这两种都不符合你指定的%H%M%S.%f格式(要求必须有6位小数的秒数部分)。

修正步骤

  1. 先将数值格式化为标准的时间字符串:确保所有值都变成HHMMSS.ffffff的格式,保留6位小数,哪怕是末尾的0也不能丢。
  2. 再转换为datetime并提取时间部分:用格式化后的字符串去匹配%H%M%S.%f格式,就能成功转换了。

修正后的代码

import pandas as pd

# 先格式化Time列为标准的6位小数字符串
df['Time'] = df['Time'].apply(lambda x: f"{x:.6f}")
# 转换为datetime并提取时间部分
df['Time'] = pd.to_datetime(df['Time'], format="%H%M%S.%f").map(lambda x: x.time())

# 测试输出
print(df["Time"][0])  # 输出 13:25:50
print(df["Time"][1])  # 输出 13:25:50.013906

额外说明

  • 用f"{x:.6f}"可以强制把每个数值都格式化为带6位小数的字符串,完美匹配%H%M%S.%f的格式要求。
  • 如果你的Time列里还有整数类型的值(比如没有小数部分的),这个方法也能统一处理,不会出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:12:30