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

使用pandas计算连续行秒级时间差触发TypeError报错如何解决?

错误原因

你遇到的类型报错是因为pd.read_csv默认将BaseDateTime列的内容识别为字符串格式,字符串无法直接执行减法运算,因此触发unsupported operand type(s) for -: 'str' and 'str'的错误。
你使用的YYYY-MM-DDTHH:MM:SS属于ISO标准时间格式,pandas可以直接识别转换,不需要手动指定时间格式模板。

解决方案

先将日期列转换为pandas内置的datetime类型,再计算时间差并转为秒单位即可,完整实现代码如下:

import pandas as pd

# 读取CSV时直接解析日期列,一步完成类型转换
df = pd.read_csv('Output1.csv', parse_dates=['BaseDateTime'])
# 计算相邻行时间差,转为秒单位存入新列
df['Time_diff'] = df['BaseDateTime'].diff().dt.total_seconds()

print(df)
补充说明
  • 输出结果第一行的Time_diff值为NaN属于正常情况,因为首行没有上一行数据可以计算差值
  • 如果你的数据中存在不合法的日期值,可以用以下方式转换日期,自动将非法日期转为空值NaT,避免程序中断:
    import pandas as pd
    df = pd.read_csv('Output1.csv')
    df['BaseDateTime'] = pd.to_datetime(df['BaseDateTime'], errors='coerce')
    df['Time_diff'] = df['BaseDateTime'].diff().dt.total_seconds()
    
  • 按照你提供的前5行测试数据,最终得到的Time_diff列结果依次为:NaN、0、5、1、3,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:09:01