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

如何在Python中利用Pandas对Excel导入的两个日期时间列相减计算耗时

解决Pandas中日期时间列相减计算耗时的问题

嘿,这个问题我之前碰到过!你现在直接执行减法会报错的核心原因是:你的issue created和issue closed列是字符串类型,Pandas没办法直接对字符串做时间运算。得先把它们转换成Pandas支持的datetime类型,之后再做减法就顺理成章啦。

下面是完整的实现步骤:

步骤1:将字符串列转换为datetime类型

我们用pd.to_datetime()方法,并且指定明确的日期格式(因为你的日期是MM/DD/YYYY HH:MM:SS AM/PM格式),这样转换更准确,避免自动识别出错:

import pandas as pd

# 先构造你的数据(如果已经从Excel导入,这一步可以跳过,直接处理现有DataFrame)
data = pd.DataFrame({
    'issue created': ['12/31/2015 11:59:45 PM', '12/31/2015 11:59:44 PM', '12/31/2015 11:59:29 PM', '12/31/2015 11:59:29 PM'],
    'issue closed': ['12/31/2015 11:57:46 PM', '12/31/2015 11:56:58 PM', '12/31/2015 11:56:30 PM', '12/31/2015 11:55:32 PM']
})

# 转换为datetime64类型
data['issue created'] = pd.to_datetime(data['issue created'], format='%m/%d/%Y %I:%M:%S %p')
data['issue closed'] = pd.to_datetime(data['issue closed'], format='%m/%d/%Y %I:%M:%S %p')

步骤2:计算耗时

转换完成后,直接对两列做减法就能得到耗时,结果会是Timedelta类型(表示时间差):

# 直接相减得到时间差(注意:你的关闭时间早于创建时间,结果会是负数)
data['elapsed duration'] = data['issue closed'] - data['issue created']

# 如果需要正数的耗时(取绝对值),可以这样写:
data['elapsed duration'] = (data['issue closed'] - data['issue created']).abs()

可选:将时间差转换为数值类型

如果需要把耗时转换成秒、分钟等数值形式,可以用dt.total_seconds()之类的方法:

# 转换为总秒数
data['elapsed seconds'] = data['elapsed duration'].dt.total_seconds()

# 转换为总分钟数
data['elapsed minutes'] = data['elapsed duration'].dt.total_seconds() / 60

这样处理后,你就能得到准确的耗时数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 15:49:11