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

如何将pandas中ISO格式时间戳字符串转为时间类型并计算行间时间差

实现方案

首先说明你提到的后缀Z是ISO时间格式中代表UTC零时区的标识,pandas的时间转换函数可以直接识别,不需要手动删除处理。

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

使用pandas内置的pd.to_datetime()方法直接转换即可,该方法原生支持带Z的ISO标准时间字符串:

# 假设你的DataFrame名为df,存储时间字符串的列名为time_str
df['timestamp'] = pd.to_datetime(df['time_str'])

步骤2:计算相邻行的时间差

使用Series的diff()方法计算相邻行的差值,再通过dt.total_seconds()将timedelta类型转换为秒数,按需换算为其他单位即可:

# 生成timedelta类型的原始时间差列
df['time_delta'] = df['timestamp'].diff()

# 转换为秒级数值
df['delta_seconds'] = df['timestamp'].diff().dt.total_seconds()

# 转换为分钟级数值
df['delta_minutes'] = df['timestamp'].diff().dt.total_seconds() / 60

完整可运行示例

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'time_str': [
        '2017-10-25T09:57:00.319Z',
        '2017-10-25T09:59:00.319Z',
        '2017-10-27T11:03:00.319Z'
    ]
})

# 转换时间类型
df['timestamp'] = pd.to_datetime(df['time_str'])

# 计算时间差
df['delta_seconds'] = df['timestamp'].diff().dt.total_seconds()
df['delta_minutes'] = df['timestamp'].diff().dt.total_seconds() / 60

print(df)

注:输出结果的第一行时间差为NaN,是因为第一行没有前置行可计算差值,可根据需求使用fillna(0)替换为0。

内容的提问来源于stack exchange,提问作者Adler Müller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 19:39:03