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

如何在Python Pandas中计算两列时间差值并解决类型报错?

Pandas计算时间列差值解决方法

错误原因

datetime.time类型本身不支持减法运算,直接用sub或者-操作都会触发类型不兼容的报错。

解决方法

方法1:转成datetime.datetime类型计算

如果你的时间列只有时间(无日期),可以给它们拼接一个默认日期(比如当天),转成完整的datetime类型后再计算差值:

import pandas as pd
from datetime import date

# 给time类型列拼接当天日期,转成datetime格式
df_null['start_dt'] = pd.to_datetime(f"{date.today()} " + df_null['starttime'].astype(str))
df_null['end_dt'] = pd.to_datetime(f"{date.today()} " + df_null['endtime'].astype(str))

# 计算时间差,结果为timedelta类型(可直接查看时/分/秒差值)
df_null['Total'] = df_null['end_dt'] - df_null['start_dt']

方法2:转成总秒数计算差值

如果只需要数值形式的时间差(比如总秒数、小时数),可以把时间转成当天的总秒数再做减法:

# 定义函数将time类型转成当天总秒数
def time_to_sec(time_val):
    return time_val.hour * 3600 + time_val.minute * 60 + time_val.second

# 计算秒数差值
df_null['Total_sec'] = df_null['endtime'].apply(time_to_sec) - df_null['starttime'].apply(time_to_sec)
# 按需转成小时数
df_null['Total_hour'] = df_null['Total_sec'] / 3600

方法3:重新读取数据时解析为datetime类型

如果你的原始数据其实包含日期,只是读入时被识别成了time类型,可直接在读取阶段指定解析为datetime:

# 读取文件时指定解析目标列为datetime类型
df_null = pd.read_csv("your_data.csv", parse_dates=['starttime', 'endtime'])
# 直接计算时间差
df_null['Total'] = df_null['endtime'] - df_null['starttime']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:50:22