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

Pandas.to_datetime无法识别日期字符串格式,自动转换混淆日/月

问题描述

我尝试将.txt文件中的数据转换为DataFrame用于分析,该文件数据格式如下:

DATE_TIME   VELOC   MEASURE 
    [m/s]   [l/h]   

A 09.01.2023 12:45:20 ??? ???
A 09.01.2023 12:46:20 0,048 52,67
A 09.01.2023 12:47:20 0,049 53,77
A 09.01.2023 12:48:20 0,050 54,86

已成功将数据加载到DataFrame,并将测量值字符串转换为float类型,但执行代码:

volume_flow['DATE_TIME'] = pd.to_datetime(volume_flow['DATE_TIME'], format = '%d.%m.%Y %H:%M:S')

时出现错误:

ValueError: time data '09.01.2023 12:46:20' does not match format '%d.%m.%Y %H:%M:S' (match)

无法找出格式不匹配原因,此前用类似代码处理其他日期格式均正常;尝试format = '%dd.%mm.%yyyy %H:%M:S'也报错。若让pd.to_datetime自动转换,会混淆日和月(数据范围09.01-12.01,无法通过值区分)。

解决方法

问题核心是格式字符串的秒部分大小写错误:你用了大写的S,而Pandas日期格式符中,秒的正确标识是小写的%S。

修改后的正确代码:

volume_flow['DATE_TIME'] = pd.to_datetime(volume_flow['DATE_TIME'], format='%d.%m.%Y %H:%M:%S')

补充几个关键细节:

  • Pandas的日期格式符大小写严格区分:年用%Y(4位)、月%m(2位)、日%d(2位),小时%H(24小时制)、分钟%M、秒%S,不能随意修改大小写。
  • 你尝试的%dd.%mm.%yyyy是错误写法,格式符不需要重复字母,直接用%d.%m.%Y即可。
  • 针对数据中存在???这类无效时间值的情况,可添加errors='coerce'参数将其转为NaT(缺失时间值),避免转换中断:
    volume_flow['DATE_TIME'] = pd.to_datetime(volume_flow['DATE_TIME'], format='%d.%m.%Y %H:%M:%S', errors='coerce')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:45:15