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

使用pd.to_datetime转换含24:00的时间序列遇hour报错的解决方法

解决pd.to_datetime处理24:00时间格式报错的问题

报错原因是Python标准datetime格式不允许小时取值为24,而2017/01/01 24:00:00本质等价于2017/01/02 00:00:00,以下是几种可行的解决方法:

方法一:手动替换+日期偏移

先将字符串中的24:00:00替换为00:00:00,再给对应行的日期加1天:

import pandas as pd

# 模拟你的数据
df = pd.DataFrame({
    'DateTime': [
        '2017/ 01/01  01:00:00',
        '2017/ 01/01  02:00:00',
        '2017/ 01/01  23:00:00',
        '2017/ 01/01  24:00:00'
    ]
})

# 标记包含24:00的行
mask = df['DateTime'].str.contains('24:00:00')
# 替换24:00为00:00
df['DateTime'] = df['DateTime'].str.replace('24:00:00', '00:00:00')
# 转换为datetime类型
df['DateTime'] = pd.to_datetime(df['DateTime'])
# 给标记行加1天
df.loc[mask, 'DateTime'] += pd.Timedelta(days=1)

方法二:使用dateutil自动解析

dateutil库的解析器支持自动识别24:00格式并转换为次日0点,需要先安装依赖(如果未安装):

pip install python-dateutil

然后执行代码:

from dateutil.parser import parse
import pandas as pd

df['DateTime'] = df['DateTime'].apply(parse)

额外说明

如果你的时间字符串存在多个连续空格(比如示例中的2017/ 01/01 24:00:00有两个空格),可以先统一清理空格,避免解析异常:

df['DateTime'] = df['DateTime'].str.replace('\s+', ' ', regex=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:50:40