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

如何用Pandas将DataFrame时间戳替换为与起始时间的差值

解决方法:用Pandas将时间戳转换为与起始时间的差值

没问题,这在Pandas里能轻松实现,我给你一步步拆解操作流程:

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

首先,你原始数据里的timestamp是字符串格式,Pandas没法直接计算时间差,所以第一步要把它转换成datetime类型:

import pandas as pd

# 假设你的DataFrame已经加载完成,名为user1
user1['timestamp'] = pd.to_datetime(user1['timestamp'])

步骤2:获取起始时间

接下来需要确定数据的起始时间——也就是所有时间戳里最早的那个点。如果你的数据是按时间顺序排列的,直接取第一行的时间就行;如果数据可能乱序,用min()方法获取最早时间会更稳妥:

# 两种方式选其一即可
start_time = user1['timestamp'].iloc[0]  # 适用于有序数据
# start_time = user1['timestamp'].min()   # 适用于可能乱序的数据

步骤3:计算时间差并替换原列

最后,计算每个时间戳与起始时间的差值,再转换成总秒数,直接替换原来的timestamp列:

user1['timestamp'] = (user1['timestamp'] - start_time).dt.total_seconds()

效果示例

用你提供的样本数据测试后,timestamp列会从:

2018-04-10 12:37:51.252
2018-04-10 12:37:51.252
2018-04-10 12:37:51.324

变成:

0.0
0.0
0.072

(注:你示例里提到的0.72秒应该是笔误,实际时间差为0.072秒)

可选优化:调整小数位数

如果需要控制秒数的小数位数,可以用round()方法,比如保留两位小数:

user1['timestamp'] = (user1['timestamp'] - start_time).dt.total_seconds().round(2)

对于你10万行的数据量,这个操作效率很高,完全不用担心性能问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:02:50