gpt4 book ai didi

Python - 如何创建值出现的运行列表并计算第一个和最后一个之间的时间差?

转载 作者:行者123 更新时间:2023-12-04 00:49:01 26 4
gpt4 key购买 nike

我有包含 3 列的数据集。客户 ID、订单号和时间。在此数据集中,您可以看到一些客户在不同时间下了多个订单。例如,ID4 的客户在下午 2:14 下了订单 4,然后在下午 6:17 下了订单 5。我需要做的是确定第一个订单和最后一个订单之间的时间。

    CustomerID  Order#  Time
0 1 1 2021-06-16 19:11:21
1 2 2 2021-06-17 19:24:19
2 3 3 2021-06-16 19:22:42
3 4 4 2021-06-14 14:16:50
4 4 5 2021-06-14 18:17:48
5 5 6 2021-06-16 21:11:06
6 6 7 2021-06-15 17:02:19
7 7 8 2021-06-13 21:01:36
8 8 9 2021-06-16 18:40:14
9 8 10 2021-06-14 14:46:59
10 8 11 2021-06-14 14:46:59
11 9 12 2021-06-17 09:10:15
12 10 13 2021-06-15 02:49:5

在 excel 中,我会将 CustomerID 从最低到最高排序,然后创建包含 ID 出现的运行列表的列,然后我会计算同一 ID 第一次出现和最后一次出现的时间差。

在 python 中我试过这个:

import pandas as pd
orders = pd.read_csv("data/Orders.csv")
occur = orders.groupby(['CustomerID']).size()

但问题是它正在对客户 ID 进行分组,我将失去时间维度。最后,我需要创建额外的 Colum,我将在其中计算同一 CustomerID 第一次出现和最后一次出现之间的时间。

所以输出看起来像这样: enter image description here

有没有办法在 python 中做到这一点?

最佳答案

Groupby CustomerID 然后计算 Time 列的最小值和最大值的聚合,然后取差,最后合并回来到原始数据框。

df['Time'] = pd.to_datetime(df['Time'])
minMax = df.groupby('CustomerID').agg(minTime=('Time', 'min'), maxTime=('Time', 'max'))
minMax['Diff'] = minMax['maxTime'] - minMax['minTime']
df = df.merge(minMax[['Diff']], on='CustomerID')

输出:

    CustomerID  Order#                Time            Diff
0 1 1 2021-06-16 19:11:21 0 days 00:00:00
1 2 2 2021-06-17 19:24:19 0 days 00:00:00
2 3 3 2021-06-16 19:22:42 0 days 00:00:00
3 4 4 2021-06-14 14:16:50 0 days 04:00:58
4 4 5 2021-06-14 18:17:48 0 days 04:00:58
5 5 6 2021-06-16 21:11:06 0 days 00:00:00
6 6 7 2021-06-15 17:02:19 0 days 00:00:00
7 7 8 2021-06-13 21:01:36 0 days 00:00:00
8 8 9 2021-06-16 18:40:14 2 days 03:53:15
9 8 10 2021-06-14 14:46:59 2 days 03:53:15
10 8 11 2021-06-14 14:46:59 2 days 03:53:15
11 9 12 2021-06-17 09:10:15 0 days 00:00:00
12 10 13 2021-06-15 02:49:05 0 days 00:00:00

关于Python - 如何创建值出现的运行列表并计算第一个和最后一个之间的时间差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68052044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com