首页 > 解决方案 > 如何计算python中特定id的日期之间的平均差距?

问题描述

我的输入数据框是这样的:对于每个公司,我们可以有多个 salesid,每个 salesid 都有唯一的创建日期。

CompanyName Salesid  Create Date
ABC         1        1-1-2020 
ABC         22       4-1-2020
ABC         3        15-1-2020
ABC         4        10-1-2020
XYZ         34       19-2-2020
XYZ         56       23-2-2020
XYZ         23       11-2-2020
XYZ         87       27-2-2020
XYZ         101      5-2-2020

我想计算每家公司的平均创造差距:我期待这种格式的输出:

Name   Mean_createdate_gap
ABC    4.66 
XYZ    5.5    

解释:

 ABC =>  (3+6+5)/3 = 4.66 (cumulative diff between dates)
 XYZ =>  (6+8+4+4)/4 = 5.5

首先,我们可能需要对数据进行排序,然后按公司名称进行分组。我不确定我应该如何实现它。

标签: pythondatemean

解决方案


将列隐藏Create到日期时间

df['Create'] = pd.to_datetime(df['Create'], format='%d-%m-%Y')

按此列排序

df = df.sort_values(by=['Create'])

使用累积差异均值进行 groupby 聚合

df.groupby('CompanyName')['Create'].agg(lambda x: x.diff().abs().mean())

CompanyName
ABC   4 days 16:00:00
XYZ   5 days 12:00:00
Name: Create, dtype: timedelta64[ns]

推荐阅读