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

Pandas:如何将时间差转换为小时.分钟格式的浮点数

实现时间差的「小时.分钟」数值格式显示

你需要将datetime类型的时间差转换为小时数.分钟数的数值格式(比如7小时36分显示为7.36,24小时41分显示为24.41),而不是常规的将分钟换算为小时比例的小数(比如7.6、24.683333)。

解决方法

核心思路是拆分时间差的总小时数和分钟数,直接将分钟数作为小数点后两位拼接成目标数值:

  1. 计算两个datetime列的时间差
  2. 将时间差中的天数转换为小时,加上原有的小时部分得到总小时数
  3. 提取时间差的分钟数
  4. 用「总小时数 + 分钟数/100」得到目标格式的数值

完整代码

import pandas as pd

lines = [
    "2023-11-12T10:36:00\t2023-11-12T03:00:00",
    "2023-11-12T00:41:00\t2023-11-11T00:00:00"
]
data = pd.DataFrame([l.split('\t') for l in lines], columns=['c1', 'c2'])
data["c1"] = pd.to_datetime(data["c1"])
data["c2"] = pd.to_datetime(data["c2"])

# 计算时间差
delta = data["c1"] - data["c2"]
# 计算总小时数(天数转小时 + 小时部分)
total_hours = delta.dt.components.days * 24 + delta.dt.components.hours
# 提取分钟数
mins = delta.dt.components.minutes
# 生成目标格式的数值
data["c3"] = total_hours + mins / 100

print(data)

输出结果

c1                  c2    c3
0 2023-11-12 10:36:00 2023-11-12 03:00:00  7.36
1 2023-11-12 00:41:00 2023-11-11 00:00:00 24.41

如果需要强制保留两位小数(比如分钟数小于10时显示为两位,如5分钟显示为05),可以先格式化字符串再转数值:

data["c3"] = pd.to_numeric(total_hours.astype(str) + '.' + mins.astype(str).str.zfill(2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:57:02