我有一个客户和购买日期的数据集,其中多个客户在不同的日子进行了购买。我想找出每个客户购买之间的平均天数差异。
Cust Date
A 01/01/2019
B 01/01/2019
B 01/01/2019
A 03/01/2019
B 02/01/2019
A 05/01/2019
中间df可以是差异:
A B
2 0
2 1
然后,可以使用该值来计算每个客户的平均值。注意,某些购买可能发生在同一天,因此将记录为0。
最终的DF看起来像这样:
Customer No.of Purchases AVG diff
A 3 1
B 3 0.5
我理解这个过程,但我在代码上遇到了麻烦。独特的客户数量是100+,所以我需要一些代码,可以为许多客户解决这个问题。我猜我必须循环遍历数据并以某种方式存储中间值,但我不确定如何在Python中完成。
任何帮助或指导都将感激不尽。
2条答案
按热度按时间bejyjqdl1#
将日期设为
datetime
和sort
,以便计算正确的差值。然后groupby
每个客户以获得所需的计算结果:iyzzxitl2#
您还可以执行以下操作:
根据customerid和service_txn_date对DataFrame进行排序
df = df.sort_values(['customerid','service_txn_date'])
df
计算每个客户连续服务交易的时间差
df['time_diff'] = df.groupby('customerid ')['service_txn_date'].diff()
df
计算每个客户平均回访天数
average_days_to_come_back = df.groupby('customerid ')['time_diff'].mean()