计算组间差异

Calculate difference between groups

您好,我如何有条件地计算创建一个基于与下一组差异的列?数据框已排序

country  fruit   time   group   group_start_time
UK       apple   12:20   a      12:20
UK       apple   12:22   a      12:20
UK       banana  12:22   b      12:22 
UK       apple   12:26   c      12:26

目标是如果当前组和下一组之间的差异小于 5 分钟,则他们可以属于同一组。 (B组开赛时间与A组相差5分钟以内,C组开赛时间与B组相差5分钟以内)

预期输出

country  fruit   time   group  group_start_time   new_group
UK       apple   12:20   a      12:20                 a
UK       apple   12:22   a      12:20                 a
UK       banana  12:22   b      12:22                 a
UK       apple   12:26   c      12:26                 a

假设您首先按开始时间对组进行排序,您可以屏蔽彼此间隔 5 分钟以内的组并应用 ffill:

m = pd.to_timedelta(df['group_start_time']+':00').diff().le('5min')
df['new_group'] = df['group'].mask(m).ffill()

输出:

  country   fruit   time group group_start_time new_group
0      UK   apple  12:20     a            12:20         a
1      UK   apple  12:22     a            12:20         a
2      UK  banana  12:22     b            12:22         a
3      UK   apple  12:26     c            12:26         a