从事件数据创建时间序列DataFrame

时间:2015-08-18 14:04:12

标签: python datetime pandas

我有一个商店位置的数据集,其中包含事件日期(所有库存从该商店出售的日期)和已售商品的数量,如下所示:

df['week'] = df.sell_date.dt.week
df.pivot_table(values = ['quantityA', 'quantityB'], index = 'week', aggfunc = [np.sum, len])

我想创建一个新的时间序列数据框,其中包含每周一次的摘要(或每日;或每个自定义date_range对象)来自这些数量A和B的范围。

我可以根据这些来生成周数和总销售额,如此......

period_range = pd.date_range(start = start, end = end, freq='7D')

但我不知道如何做到以下几点:

  1. 将其扩展为全时系列(基于date_range对象,例如specialist),
  2. 包括原始日期(作为“周起始”变量),而不是整数周数,或
  3. 将日期变量更改为此新数据框的索引。

1 个答案:

答案 0 :(得分:2)

我不确定这是否是您想要的,但您可以尝试

df.set_index('sell_date', inplace=True) 
resampled = df.resample('7D', [sum, len])

结果索引可能不是您想要的,因为它从最早的日期时间开始正确到纳秒。您可以通过执行

替换当时00:00:00的日期时间
resampled.index = pd.to_datetime(resampled.index.date)

编辑:

你实际上可以做到

    resampled = df.resample('W', [sum, len])

结果索引正是您想要的。有趣的是,传递'D'也会给出你期望的索引,但是传递多个像'2D'的结果会产生'丑陋'的索引,也就是说,从最早的正确到纳秒开始并且准确地增加倍数2天。我想这个教训是尽可能坚持像'D','W','M'这样的单曲。