我的交易数据包含客户发票之间的时间戳。我试图计算两张独特发票之间的平均天数(按照' ServicedOn')。有两点需要注意:
数据框看起来如此:
InvoiceNo SoldOn ServicedOn ItemType ItemCode GuestId FinalSalePrice FirstVisit Package BUName SalePrice Merchant_id
21312 4/26/2015 12:55:12 PM 4/26/2015 8:00:00 AM 0 SER-310-008 5a531810-9413-4091-acd5-424d125b0c9e 3089.9 No No Package Spa 2500 POW
31639 1153 6/12/2015 7:11:22 PM 6/12/2015 6:15:00 PM 0 SER-1257-008 5a531810-9413-4091-acd5-424d125b0c9e 5700.0 No No Package Spa 5000 POW
42492 73 5/15/2015 8:05:50 PM 5/15/2015 8:05:50 PM 2 ITM-3407-001 5a531810-9413-4091-acd5-424d125b0c9e 1600.0 No No Package Default 1422 POW
42493 73 5/15/2015 8:06:08 PM 5/15/2015 8:06:08 PM 2 ITM-3175-001 5a531810-9413-4091-acd5-424d125b0c9e 2750.0 No No Package Default 2444 POW
42494 73 5/15/2015 8:05:38 PM 5/15/2015 8:05:38 PM 2 ITM-4340-001 5a531810-9413-4091-acd5-424d125b0c9e 575.0 No No Package Default 511 POW
我不确定如何继续,所以任何指导都会被推荐!
答案 0 :(得分:0)
在所有发票号码上执行您想要的操作非常简单。如果第一个ServicedOn正在进行中,您可以排序,然后使用groupby
和head
获取每个InvoiceNo的第一个日期,然后选择列并计算平均差异:
mean_difference = (df.sort_values(by='ServicedOn') # Get everything in date order
.groupby('InvoiceNo') # group by invoice
.head(1) # take first of each group
.ServicedOn # only look at ServicedOn value
.diff() # take differences
.mean()) # calculate mean