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

在Pandas中将秒转换为HH:MM:SS格式(天数并入小时)

将Pandas DataFrame的秒数字段转换为包含合并天数的HH:MM:SS格式

给定包含秒数字段的Pandas DataFrame:

import pandas as pd

df = pd.DataFrame({'seconds': [122400, 43245, 234143, 53245, 394911]})

需要将seconds字段转换为HH:MM:SS格式,其中天数部分直接并入小时数(例如1天10小时需显示为34:00:00),最终得到目标结果。

解决方案

方法1:手动计算时分秒

通过数学运算直接拆分总秒数,将天数对应的小时数直接累加到小时字段中:

# 计算总小时数(包含天数转换的部分)
df['hours'] = df['seconds'] // 3600
# 计算剩余秒数,拆分分钟和秒
remaining_sec = df['seconds'] % 3600
df['minutes'] = remaining_sec // 60
df['seconds_final'] = remaining_sec % 60

# 格式化字符串,确保分钟和秒为两位数
df['time'] = df.apply(lambda row: f"{row['hours']}:{row['minutes']:02d}:{row['seconds_final']:02d}", axis=1)

# 保留需要的列
df = df[['seconds', 'time']]

运行后输出结果:

seconds       time
0   122400   34:00:00
1    43245   12:00:45
2   234143   65:02:23
3    53245   14:47:25
4   394911  109:41:51

方法2:利用Pandas Timedelta组件

借助pd.to_timedelta转换秒数,再通过dt.components提取分钟和秒,总小时数由总秒数计算得到:

# 转换为timedelta对象
df['timedelta'] = pd.to_timedelta(df['seconds'], unit='s')

# 计算总小时数,提取分钟和秒
df['hours'] = df['timedelta'].dt.total_seconds() // 3600
df['minutes'] = df['timedelta'].dt.components['minutes']
df['seconds_final'] = df['timedelta'].dt.components['seconds']

# 格式化时间字符串
df['time'] = df.apply(lambda row: f"{int(row['hours'])}:{row['minutes']:02d}:{row['seconds_final']:02d}", axis=1)

# 清理列
df = df[['seconds', 'time']]

该方法同样能得到符合要求的结果,利用Pandas内置的时间处理功能简化计算步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:45:51