You need to enable JavaScript to run this app. 如何用Pandas计算DataFrame两个datetime列的分钟级时间差?
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas计算DataFrame两个datetime列的分钟级时间差?

实现分钟级行程时长计算的修正方法

问题根源

你当前的代码存在三处问题,导致输出不符合预期:

  • 语法错误:新增列的字段名字符串未闭合,你写的是df['trip_duration],少了字段名后的单引号,实际运行时会直接触发语法报错。
  • 时间差的计算顺序颠倒。计算两时间点的间隔时长,逻辑上应为结束时间 - 开始时间,你当前代码是用开始时间减结束时间,方向完全相反,因此跨天的样本会出现带-1 days的特殊时间差格式(比如你得到的-1 days +23:32:00等价于实际间隔-28分钟),数值符号与实际时长相反。
  • 未对计算结果做单位转换。两个datetime列直接相减得到的是Timedelta类型的时间间隔对象,不是你需要的、以分钟为单位的纯数值列。

可直接运行的修正代码

# 先将两个原始文本列统一转换为pandas可识别的datetime类型
start_time = pd.to_datetime(df['Start date'])
end_time = pd.to_datetime(df['End date'])

# 按正确顺序计算间隔,并将所有时间维度折算为纯分钟数值
df['trip_duration'] = (end_time - start_time).dt.total_minutes()

注:必须使用total_minutes()方法做转换,不能直接取秒数/小时数做换算——如果只取seconds属性做计算,跨天的时间差会遗漏“天”维度的折算,导致结果严重偏差。

对应你示例数据的输出结果

按照上述代码运行后,生成的trip_duration列值为:

  • 第一行:28.0 分钟(11/30 23:58 到 12/01 0:26 的实际间隔)
  • 第二行:5.0 分钟(11/30 23:56 到 12/01 0:01 的实际间隔)
  • 第三行:18.0 分钟(11/30 23:18 到 11/30 23:36 的实际间隔)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 12:06:11