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

如何用Pandas按时间相对差小于20分组计算Value列的求和?

如何用Pandas按「相邻时间差小于20」分组求和

没问题,这个需求核心是先确定分组的边界,咱们一步步来实现:

首先,先把你给的数据集构造成Pandas的DataFrame:

import pandas as pd

data = {
    'time': [1, 2, 20, 50, 55, 74, 100, 105, 120],
    'value': [4, 5, 7, 8, 10, 12, 1, 21, 0]
}
df = pd.DataFrame(data)

接下来是关键步骤:生成分组标签。我们需要判断相邻行的time差值是否≥20,如果是,就开启一个新组:

  1. 用diff()计算相邻time的差值,第一行因为没有上一行,结果是NaN
  2. 把差值≥20的标记为1,其他情况标记为0,第一行填充0(属于第一个组)
  3. 对这些标记做累加(cumsum()),就能得到每个行对应的分组ID

代码如下:

# 计算相邻时间差
time_diff = df['time'].diff()
# 生成分组标记:差值≥20时为1,否则为0,第一行填充0
group_flag = (time_diff >= 20).astype(int).fillna(0)
# 累加得到分组ID
df['group_id'] = group_flag.cumsum()

此时你的DataFrame会多一列group_id,对应每个元素的分组:

timevaluegroup_id
140
250
2070
5081
55101
74121
10012
105212
12002

最后一步,按group_id分组对value列求和:

result = df.groupby('group_id')['value'].sum().reset_index()

最终结果如下,完全符合你的分组求和需求:

group_idvalue
016
130
222

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:43:10