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

Python转换Excel特殊时间格式报错:hour must be in 0..23

问题解决:时间转换报错"hour must be in 0..23"

错误原因

  1. 重复调用pd.to_datetime完全多余,第一次转换后df['start']已经是datetime类型,二次转换反而会引发格式冲突。
  2. 格式符#H是无效写法,这是导致小时范围错误的核心问题——pandas无法识别这个格式,解析时会把小时部分解析出超出0-23的数值。

正确处理步骤

1. 正确解析原始时间格式

先确保用匹配Excel原始时间的格式符解析列:

  • 若Excel里的时间格式是yy/mm/dd #HH:MM:SS(比如25/03/12 #14:07:41),格式符要写成%y/%m/%d #%H:%M:%S,其中%H代表24小时制小时(0-23),不会触发范围错误。
  • 若pandas能自动识别原始时间,可跳过手动解析,直接格式化。

2. 转换成目标格式

用dt.strftime将datetime类型转成12.07.41am格式,其中:

  • %I:12小时制小时(1-12)
  • %M:分钟
  • %S:秒
  • %p:AM/PM标识,最后用.str.lower()转成小写。

完整代码示例

import pandas as pd

# 第一步:解析原始时间(根据实际格式调整format参数)
df['start'] = pd.to_datetime(df['start'], format='%y/%m/%d #%H:%M:%S')

# 第二步:转换成目标格式
df['start_formatted'] = df['start'].dt.strftime('%I.%M.%S%p').str.lower()

简化场景(自动识别原始时间)

如果pandas无需指定format就能正确解析start列,直接格式化即可:

df['start_formatted'] = df['start'].dt.strftime('%I.%M.%S%p').str.lower()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:45:26