如何将超过24小时的时长字符串转换为datetime对象?
解决方法
pd.to_datetime的%H格式仅支持0-23的小时数,无法直接解析超过24小时的时长字符串。可以通过以下步骤实现转换:
- 将时长字符串解析为**时间差(timedelta)**对象,它支持任意时长的小时数。
- 选择一个基准日期(比如
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
相关产品推荐
相关产品推荐

