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

如何将CSV中带毫秒的日期时间列转换为带毫秒的Datetime类型

问题分析与解决方法

代码错误原因

你的datetime.strptime格式字符串有两处问题:

  • 毫秒部分的格式符使用错误:应该用.%f表示秒后的小数部分(%f对应微秒,会自动适配1-6位的毫秒/微秒数值),你写成了.f
  • 格式字符串末尾多了一个多余的%,这就是触发ValueError: stray % in format的直接原因

正确解决方案

方案1:修正strptime格式

调整格式字符串为正确的写法,即可正常解析:

from datetime import datetime
df['datetime'] = df['datetime'].apply(lambda x: datetime.strptime(x, '%Y/%m/%d %H:%M:%S.%f'))

方案2:使用Pandas内置方法更高效

Pandas的pd.to_datetime支持直接解析拼接后的日期时间字符串,甚至无需手动拼接列,效率远高于apply循环:

import pandas as pd

# 方式1:自动识别格式
df['datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'])

# 方式2:指定格式提升解析速度(推荐大数据量时使用)
df['datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'], format='%Y/%m/%d %H:%M:%S.%f')

补充说明

  • %f格式符可以匹配1到6位的小数部分,完全适配你数据中1位、2位、3位的毫秒数值
  • 若数据中存在不规范的日期时间格式,可添加errors='coerce'参数将无效值转为NaT,方便后续处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:05:32