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

基于时间间隔检查历史记录:为DataFrame新增5分钟内重复购果标记列

为按用户和时间排序的采购DataFrame新增标记列的实现方案

现有一份已按name(用户)和time(时间)排序的水果采购DataFrame,需要为每个唯一用户新增一列purchased_same_fruit_within5minutes,标记当前采购记录的前5分钟内该用户是否购买过相同水果。示例数据如下:

name  fruit  time   purchased_same_fruit_within5minutes
0  Amy   apple 10:00      False
1  Amy   pear  10:04      False
2  Amy   apple 10:06      False (10:00 apple purchase was 6 minutes ago)
3  Amy   pear  10:07      True (pear at 10:04)
4  Ben   ...

实现步骤

  1. 转换时间列为可计算格式
    首先要把字符串格式的time列转为datetime类型,否则无法计算时间差:

    import pandas as pd
    
    # 假设原始time列是"HH:MM"格式的字符串
    df['time'] = pd.to_datetime(df['time'], format='%H:%M')
    
  2. 匹配同用户同水果的上一条采购时间
    利用分组+shift()方法,获取每个用户对应每种水果的上一次采购时间:

    # 按用户和水果分组,取同组的上一条时间记录
    df['prev_purchase_time'] = df.groupby(['name', 'fruit'])['time'].shift(1)
    
  3. 生成5分钟内的标记列
    计算当前时间与上一条时间的差值,判断是否≤5分钟;没有上一条记录的情况直接标记为False:

    # 计算时间差(单位:分钟),并生成标记列
    df['purchased_same_fruit_within5minutes'] = (
        (df['time'] - df['prev_purchase_time']).dt.total_seconds() / 60 <= 5
    ).fillna(False)
    
  4. (可选)清理中间列
    如果不需要中间生成的prev_purchase_time列,可以直接删除:

    df = df.drop('prev_purchase_time', axis=1)
    

完整代码示例

import pandas as pd

# 构造示例数据
data = {
    'name': ['Amy', 'Amy', 'Amy', 'Amy'],
    'fruit': ['apple', 'pear', 'apple', 'pear'],
    'time': ['10:00', '10:04', '10:06', '10:07']
}
df = pd.DataFrame(data)

# 转换时间格式
df['time'] = pd.to_datetime(df['time'], format='%H:%M')

# 获取同用户同水果的上一次采购时间
df['prev_purchase_time'] = df.groupby(['name', 'fruit'])['time'].shift(1)

# 生成目标标记列
df['purchased_same_fruit_within5minutes'] = (
    (df['time'] - df['prev_purchase_time']).dt.total_seconds() / 60 <= 5
).fillna(False)

# 清理中间列
df = df.drop('prev_purchase_time', axis=1)

print(df)

运行后输出结果:

name  fruit                time  purchased_same_fruit_within5minutes
0   Amy  apple 1900-01-01 10:00:00                                 False
1   Amy   pear 1900-01-01 10:04:00                                 False
2   Amy  apple 1900-01-01 10:06:00                                 False
3   Amy   pear 1900-01-01 10:07:00                                  True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:15:13