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

Pandas处理超过24:00:00的时间格式转换问题求助

解决超过24:00:00的时间格式转换问题

问题根源

pd.to_datetime的%H格式仅接受00-23的小时数值,而你的数据中存在24:18:00这类跨天时间,因此触发格式不匹配的ValueError。

解决方案

根据使用场景,推荐两种处理方式:

1. 转换为Timedelta类型(适合仅计算时间间隔)

如果不需要具体日期,仅需处理时间跨度,将时间转为Timedelta是最直接的方式,天然支持超过24小时的时间:

def parse_over24_time(time_str):
    # 拆分时、分、秒并转为整数
    hours, minutes, seconds = map(int, time_str.split(':'))
    # 返回Timedelta对象
    return pd.Timedelta(hours=hours, minutes=minutes, seconds=seconds)

# 应用函数转换列
Trains["arrival_time"] = Trains["arrival_time"].apply(parse_over24_time)

处理后,24:18:00会被转为1 days 00:18:00的Timedelta,后续计算时间差、累加等操作完全兼容。

2. 转换为带日期的Datetime类型(需关联具体日期)

如果需要将到达时间映射到具体日期(比如结合出发时间),可以先转Timedelta,再基于出发日期计算实际到达时间:

# 先将到达时间转为Timedelta
def parse_over24_time(time_str):
    hours, minutes, seconds = map(int, time_str.split(':'))
    return pd.Timedelta(hours=hours, minutes=minutes, seconds=seconds)

Trains["arrival_delta"] = Trains["arrival_time"].apply(parse_over24_time)

# 假设出发日期为基准日期(比如2024-01-01),结合出发时间生成出发Datetime
# 这里需替换成你的出发时间列名
Trains["departure_datetime"] = pd.to_datetime("2024-01-01 " + Trains["departure_time"])

# 计算实际到达Datetime
Trains["arrival_datetime"] = Trains["departure_datetime"] + Trains["arrival_delta"]

这种方式会自动处理跨天情况,比如Day1 23:50出发,加上00:28的间隔(对应24:28:00),会得到Day2的00:18:00。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:45:59