在python中,如何计算特定id的平均日期间隔?

在python中,如何计算特定id的平均日期间隔?,python,date,mean,Python,Date,Mean,我的输入数据框如下所示: 在这里,对于每个公司,我们可以有多个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

我的输入数据框如下所示: 在这里,对于每个公司,我们可以有多个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
我想计算每个公司的平均createdate差距: 我希望得到以下格式的输出:

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

首先,我们可能需要对数据进行排序,然后按companyname进行分组。我不知道该如何实现它。

Covert
Create
column to datetime

df['Create'] = pd.to_datetime(df['Create'], format='%d-%m-%Y')
按此列排序

df = df.sort_values(by=['Create'])
使用累积差分平均值进行分组聚合

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]
给你:

df['Create Date']=pd.to_datetime(df['Create Date'],格式=“%d-%m-%Y”)
res=df.sort_值(按class='Create Date')\
.groupby('CompanyName',sort=False)['Create Date']\
.agg(lambda cd:cd.diff().map(lambda dt:dt.days).mean()).reset_index()\
.rename(列={'CompanyName':'Name','Create Date':'Mean\u createdate\u gap'})
打印(res)
输出

  Name  Mean_createdate_gap
0  ABC             4.666667
1  XYZ             5.500000

到目前为止你试过什么?对于初学者,请尝试手动循环
iterrows
。我不知道如何开始:')