计算组间差异
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
您好,我如何有条件地计算创建一个基于与下一组差异的列?数据框已排序
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