You need to enable JavaScript to run this app. 如何使用pandas计算各商品平均购买间隔并新增对应列
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandas计算各商品平均购买间隔并新增对应列

实现步骤与代码

你给出的示例中DataFrame构造代码存在语法错误(data列表闭合括号位置错误),先修正后按以下逻辑实现:

1. 基础数据准备

import pandas as pd

# 修正语法错误后的DataFrame构造代码
df = pd.DataFrame(data=[['A', '2021-01-06 10:25:21'],
                        ['A', '2020-11-04 08:48:23'],
                        ['B', '2020-10-26 17:04:34'],
                        ['C', '2020-08-05 17:06:09'],
                        ['A', '2021-04-15 13:20:50'],
                        ['B', '2021-04-05 18:20:29'],
                        ['A', '2021-04-15 13:20:50'],
                        ['C', '2021-01-05 14:05:09']],
                  columns=['product', 'purchased_at'])

# 将购买时间转换为datetime格式,支持时间差计算
df['purchased_at'] = pd.to_datetime(df['purchased_at'])

2. 场景1:新增列存储每个商品全量的平均购买间隔(同商品所有记录值一致)

直接对同商品所有历史购买时间差求均值,映射回原表即可,支持任意数量的商品分组:

# 时间间隔单位默认为秒,如需天单位可替换为 .diff().dt.days.mean()
df['avg_purchase_interval'] = df.groupby('product')['purchased_at'].transform(
    lambda x: x.sort_values().diff().dt.total_seconds().mean()
)

3. 场景2:新增列存储单条记录对应的历史累计平均间隔(仅计算该次购买之前的间隔均值)

如果需要每条购买记录对应截止到本次购买的历史平均间隔(不包含后续购买数据),用以下逻辑实现:

# 先按商品+购买时间升序排序全表
df = df.sort_values(['product', 'purchased_at']).reset_index(drop=True)
# 计算同商品相邻两次购买的时间差
df['time_diff'] = df.groupby('product')['purchased_at'].diff().dt.total_seconds()
# 计算累计平均间隔,第一条购买记录无前置数据为NaN
df['history_avg_interval'] = df.groupby('product')['time_diff'].expanding().mean().reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 23:27:08