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

如何将超过24小时的时长字符串转换为datetime对象?

解决方法

pd.to_datetime的%H格式仅支持0-23的小时数,无法直接解析超过24小时的时长字符串。可以通过以下步骤实现转换:

  1. 将时长字符串解析为**时间差(timedelta)**对象,它支持任意时长的小时数。
  2. 选择一个基准日期(比如1900-01-01),将时间差与基准日期相加,得到对应的datetime对象。

具体代码实现

import pandas as pd
from datetime import datetime, timedelta

data = [
    ['A','01:00:00'],
    ['B','23:10:00'],
    ['C','13:20:05'],
    ['D','27:30:25']
]
df = pd.DataFrame(data,columns=['ID','duration'])

# 定义函数:将时长字符串转为datetime对象
def duration_to_datetime(dur_str):
    hours, mins, secs = map(int, dur_str.split(':'))
    delta = timedelta(hours=hours, minutes=mins, seconds=secs)
    # 以1900-01-01为基准日期
    base_dt = datetime(1900, 1, 1)
    return base_dt + delta

# 应用函数转换
df['datetime'] = df['duration'].apply(duration_to_datetime)
print(df)

输出结果

ID  duration            datetime
0  A  01:00:00 1900-01-01 01:00:00
1  B  23:10:00 1900-01-01 23:10:00
2  C  13:20:05 1900-01-01 13:20:05
3  D  27:30:25 1900-01-02 03:30:25

补充说明

  • 如果不需要具体的日期,仅需保留时长信息,直接使用timedelta对象即可,无需转换为datetime:
    df['timedelta'] = df['duration'].apply(lambda x: timedelta(*map(int, x.split(':'))))
    
    这样得到的timedelta列可以直接用于时长计算(比如相加、相减)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:33:15