如何获得大熊猫时间戳之间的平均天数?

时间:2017-10-03 12:16:45

标签: python pandas datetime data-science

我的交易数据包含客户发票之间的时间戳。我试图计算两张独特发票之间的平均天数(按照' ServicedOn')。有两点需要注意:

  • 唯一发票可以包含多个具有不同时间戳的行(因为它们可能在不同时间提供服务)。
  • 时间戳也有时间值,因此我无法使用diff()方法计算增量天数。

数据框看起来如此:

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

我不确定如何继续,所以任何指导都会被推荐!

1 个答案:

答案 0 :(得分:0)

在所有发票号码上执行您想要的操作非常简单。如果第一个ServicedOn正在进行中,您可以排序,然后使用groupbyhead获取每个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