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

Python格式化指定日期字符串时返回全NaT问题求助

问题排查与解决

核心问题分析

你遇到的NaT问题源于两处格式匹配错误:

  1. 末尾字符不匹配:日期字符串末尾是' - '(减号后带空格),但格式字符串里写的是'-'(无空格),导致解析时无法完全匹配。
  2. 单数字日期/月份的格式符错误:指定format时,%m要求两位月份数字(如04),但你的字符串是单数字4,直接用%m会匹配失败。

解决方案

方案1:修正格式字符串(区分操作系统)

根据你的操作系统选择对应格式符,匹配单数字日期/月份并修正末尾空格:

  • Linux/macOS(Unix系统):
df['message_date'] = pd.to_datetime(df['message_date'], format='%-m/%-d/%y, %I:%M %p - ', errors="coerce")
  • Windows系统:
df['message_date'] = pd.to_datetime(df['message_date'], format='%#m/%#d/%y, %I:%M %p - ', errors="coerce")

方案2:先清理字符串再解析(通用跨平台)

先移除字符串末尾的' - '冗余部分,再进行解析,避免平台差异问题:

# 清理末尾的' - '
df['message_date'] = df['message_date'].str.rstrip(' - ')
# 转换为datetime类型
df['message_date'] = pd.to_datetime(df['message_date'], format='%m/%d/%y, %I:%M %p', errors="coerce")

验证方法

可以先取单个字符串测试,确认格式是否正确:

test_str = '4/20/22, 4:08 PM - '
clean_str = test_str.rstrip(' - ')
print(pd.to_datetime(clean_str, format='%m/%d/%y, %I:%M %p'))
# 输出应为:2022-04-20 16:08:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:25:42