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

如何将timedelta转换为小时格式?含DataFrame实例转换需求

解决Pandas Timedelta转小时格式及数值的问题

嗨,刚好我经常处理这类时间转换需求,来给你一步步讲清楚~

一、将Timedelta转为「总小时数:分:秒」格式

你想要把带天数的timedelta转成类似93:02:05这种格式,核心思路是把天数换算成小时,再和原有的小时数相加,最后拼接上原有的分秒部分就行。

直接上代码示例(用你给的测试数据):

import pandas as pd

# 先构造你的示例DataFrame
df = pd.DataFrame({
    'JC time': [
        pd.Timedelta("3days 21:02:05"),
        pd.Timedelta("1days 23:50:07"),
        pd.Timedelta("6days 19:28:36")
    ]
})

# 计算总小时数:天数×24 + 原有小时数
total_hours = df['JC time'].dt.days * 24 + df['JC time'].dt.hours

# 提取分秒部分,用strftime格式化
time_part = df['JC time'].dt.strftime("%M:%S")

# 拼接成目标格式
df['JC time_formatted'] = total_hours.astype(str) + ":" + time_part

print(df['JC time_formatted'])

运行后输出就是你要的:

0     93:02:05
1     47:50:07
2    163:28:36
Name: JC time_formatted, dtype: object

二、通用的Timedelta转小时数值方法

如果你需要把timedelta转成可用于计算的小时数值(比如带小数的浮点数),最直接的方式是先转成总秒数,再除以3600:

# 转成带小数的小时数
df['JC time_hours'] = df['JC time'].dt.total_seconds() / 3600

print(df['JC time_hours'])

输出结果是:

0     93.034722
1     47.835278
2    163.476667
Name: JC time_hours, dtype: float64

这个方法适用于所有timedelta场景,不管有没有天数、分钟、秒数,都能准确算出总小时数。

小提示:如果你的timedelta包含毫秒甚至微秒,total_seconds()也会一并计算进去,结果会更精准哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:22:28