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

如何将Pandas列中多种格式日期时间字符串批量转换为pd.timestamp

解决方案

你的代码返回NaT是因为指定了固定的%d/%m/%Y %H:%M格式,只有同时包含日期、小时、分钟的数据才能被正常解析,缺少时分、多了秒、年份为两位的字符串都会匹配失败。

方法1:自动推断格式(最简单)

不指定固定格式,开启dayfirst=True适配你「日/月/年」的日期顺序,pandas会自动匹配不同的日期格式:

import pandas as pd

# 示例数据
datetimes= {
    'DATETIMEOFCALL': [
        '12/10/2021 15:30',
        '10/12/2021', 
        '10/12/21', 
        '12/10/2021 14:59:59',
        '12/10/2021 14:59:69',
        None,
    ]
}
df = pd.DataFrame(datetimes)

# 日期转换
df['DATETIMEOFCALL'] = pd.to_datetime(df['DATETIMEOFCALL'], dayfirst=True, errors='coerce')

解析结果说明:

  • 合法的日期字符串都会被转为Timestamp格式,缺失时分的会默认补00:00:00,两位年默认识别为20xx年
  • 秒数为69的无效时间、空值会被转为NaT,这是日期类型的空值标识,属于预期结果

方法2:指定多格式匹配(准确率更高)

如果担心自动推断出现日期顺序识别错误,可以显式传入所有可能的格式列表(需要pandas 1.4及以上版本):

formats = ['%d/%m/%Y %H:%M:%S', '%d/%m/%Y %H:%M', '%d/%m/%Y', '%d/%m/%y']
df['DATETIMEOFCALL'] = pd.to_datetime(df['DATETIMEOFCALL'], format=formats, errors='coerce')

pandas会按顺序尝试匹配每个格式,直到找到符合的规则完成转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:06:02