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

如何在pandas中将datetime格式的时长转换为分钟数

将Timedelta格式的时长转换为分钟数

很简单,因为你的usage_duration列是datetime差值生成的timedelta类型,我们可以直接利用pandas的内置方法来实现转换,下面给你两种可行的方案:

方案一:利用总秒数转换(推荐)

如果你的usage_duration已经是timedelta类型,直接计算总秒数再转成分钟即可;如果是字符串格式,先转成timedelta类型:

import pandas as pd

# 假设你的DataFrame是df,先处理字符串转timedelta(如果需要的话)
df['usage_duration'] = pd.to_timedelta(df['usage_duration'])

# 转换为分钟数,用整数除法取整(匹配你的预期结果)
df['usage_duration_min'] = (df['usage_duration'].dt.total_seconds() // 60).astype(int)

# 可选:删除原时长列
df = df.drop('usage_duration', axis=1)

方案二:拆分时间组件计算

如果你想更直观地拆分天、小时、分钟来计算,可以用dt.components提取各部分后累加:

import pandas as pd

# 同样先确保列是timedelta类型
df['usage_duration'] = pd.to_timedelta(df['usage_duration'])

# 拆分出天、小时、分钟等时间组件
time_components = df['usage_duration'].dt.components

# 计算总分钟数:天*1440 + 小时*60 + 分钟
df['usage_duration_min'] = time_components.days * 1440 + time_components.hours * 60 + time_components.minutes

# 可选:删除原时长列
df = df.drop('usage_duration', axis=1)

验证结果

两种方法运行后都能得到你预期的输出:

processid userid  usage_duration_min
0      17613   root                1421
1      17641   root                3125
2      13848    acs                   0
3       3912    acs                 367
4       6156    acs                1042

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:08:21