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

基于Pandas DataFrame计算重复客户两次订单的时间间隔(分钟)

解决Pandas计算客户两次订单时间差问题

问题说明

我有一个包含两列的Pandas DataFrame,列名为Order date(datetime格式)和Customer;每个重复的Customer仅存在两条已排序的记录。需要计算每个客户第二次订单的Order date与第一次的时间差(以分钟为单位),并生成仅包含Customer名称和时间差的新DataFrame。

原始示例数据

Order date  Customer
4260    2022-11-11 16:29:00 (App admin)
8096    2022-10-22 12:54:00 (App admin)
996 2021-09-22 20:30:00 10013
946 2021-09-14 15:16:00 10013
3499    2022-04-20 12:17:00 100151
... ... ...
2856    2022-03-21 13:49:00 99491
2788    2022-03-18 12:15:00 99523
2558    2022-03-08 12:07:00 99523
2580    2022-03-04 16:03:00 99762
2544    2022-03-02 15:40:00 99762

之前尝试通过索引删除数据,仅返回前两条记录,无法满足需求。

期望输出格式

Customerdifference in minutes
1232445.0
(App Admin)3432.0
11452455.0
665332.0

解决方案

代码实现

import pandas as pd

# 确保Order date列是datetime类型(若未转换)
df['Order date'] = pd.to_datetime(df['Order date'])

# 按Customer分组,计算相邻订单的时间差并转换为分钟
time_diff = df.groupby('Customer')['Order date'].diff().dt.total_seconds() / 60

# 过滤空值,整理为目标DataFrame
result_df = time_diff.dropna().reset_index()
result_df.columns = ['Customer', 'difference in minutes']

逻辑说明

  1. 类型转换:先确保Order date是datetime格式,否则无法计算时间差。
  2. 分组计算差值:groupby('Customer')将数据按客户分组,diff()计算每组内当前行与前一行的时间差——由于每个客户只有两条记录,每组仅第二条记录会得到有效差值,第一条为NaN。
  3. 单位转换与整理:dt.total_seconds() / 60将时间差从时间对象转为分钟数,dropna()去掉空值后,重置索引并修改列名得到目标格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:05:29