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

如何在Pandas DataFrame中按用户提取time列的跨行差值?

解决方案:按用户提取time列的连续差值

没问题,这事儿用Pandas的组合操作就能完美解决,正好满足你要的针对每个用户,计算当前行与上一次出现行的time差值的需求。

步骤1:先还原你的DataFrame

首先我们把你提供的数据转换成可运行的Pandas DataFrame:

import pandas as pd

# 构造你的数据
data = {
    'user': ['F', 'T', 'T', 'T', 'B', 'K', 'J', 'T', 'J', 'B'],
    'time': [0, 0, 0, 1, 1, 2, 2, 3, 4, 4]
}
df = pd.DataFrame(data)

步骤2:核心计算逻辑

用groupby按用户分组,再对time列使用diff()方法——这个方法专门用来计算组内当前行与前一行的差值,完全匹配你的需求:

# 新增time_diff列,存储每个用户的连续time差值
df['time_diff'] = df.groupby('user')['time'].diff()

运行结果说明

执行后你会得到这样的结果:

indexusertimetime_diff
0F0NaN
1T0NaN
2T00.0
3T11.0
4B1NaN
5K2NaN
6J2NaN
7T32.0
8J42.0
9B43.0
  • 第一次出现的用户(比如F、首次出现的T/J/B/K)因为没有上一次的时间记录,所以time_diff为NaN,这是合理的;
  • 你提到的用户J,两次出现的time分别是2和4,差值4-2=2,正好对应结果里的2.0;
  • 多次出现的用户(比如T),每次的差值都是当前time减去上一次出现的time,完全符合你“提取当前行与上一次出现行的time差值”的要求。

可选:处理空值

如果想把首次出现的NaN替换成0(或者其他默认值),可以用fillna():

df['time_diff'] = df.groupby('user')['time'].diff().fillna(0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:55:37