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

如何在pandas中计算分组内相邻行的差值

解决方案

你需要的效果可以通过groupby + shift组合实现,无需用到stack,实现逻辑很简单:将同组内的time列向上偏移1位后,减去当前行的time值即可。

完整代码示例

import pandas as pd

# 初始化示例数据
df = pd.DataFrame({'group': [1, 1, 1, 2, 2, 3, 3, 3, 3], 'time': [12, 44, 55, 2, 7, 100, 105, 106, 200]})

# 核心计算逻辑
df['diff_to_next_step'] = df.groupby('group')['time'].shift(-1) - df['time']

# 如果你需要把NaN显式转为Python原生None值,可以加下面这行
# df['diff_to_next_step'] = df['diff_to_next_step'].where(df['diff_to_next_step'].notna(), None)

print(df)

输出结果

group  time  diff_to_next_step
0      1    12                32.0
1      1    44                11.0
2      1    55                 NaN
3      2     2                 5.0
4      2     7                 NaN
5      3   100                 5.0
6      3   105                 1.0
7      3   106                94.0
8      3   200                 NaN

注意事项

如果你的原始数据中同组内的time不是按升序排列的,需要先对数据排序再计算差值,避免结果出错:

# 先按分组、时间排序,重置索引
df = df.sort_values(['group', 'time']).reset_index(drop=True)
# 再执行差值计算
df['diff_to_next_step'] = df.groupby('group')['time'].shift(-1) - df['time']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:15:00