如何获得 pandas 中时间戳之间的平均天数?

How can I get the average days between timestamps in pandas?

我的交易数据带有客户发票之间的时间戳。我正在尝试计算两张唯一发票之间的平均天数(按 '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

我不确定如何进行,因此欢迎任何指导!

对所有发票编号执行您想要的操作非常简单。如果第一个 ServicedOn 是您要进行的操作,则可以排序,然后使用 groupbyhead 获取每个 InvoiceNo 的第一个日期,然后 select 该列并计算平均值差异:

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