如何在定义的日期范围内为每个组增加行?

时间:2019-01-10 21:36:25

标签: python pandas

我的数据集的这个例子。通过组合store_id和product_id,您可以拥有唯一的ID。

store_id  product_id   Date
   a            1      
   a            2      
   a            3
   b            1
   c            3

我想知道是否有一种方法可以为每个组添加更多行,以使其位于日期列下的特定时间范围内。例如:

pd.date_range('12-01-2017', '12-31-2017',freq='7D')

所需结果(此日期范围内的Store_id和product_id重复)

    store_id  product_id   Date
       a            1       12-01-2017
       a            1       12-08-2017 
       a            1       12-15-2017
       a            1       12-22-2017   
       a            1       12-29-2017  
       a            2       12-01-2017
       a            2       12-08-2017 
       a            2       12-15-2017
       a            2       12-22-2017   
       a            2       12-29-2017 
       a            3          ...
       a            3          ...
          ....
          ....                 ....
       b            1
       c            3

因此,最终,我需要的是每个store_id和product_id组合将基于data_range函数多出X行。

请帮助!谢谢你们

1 个答案:

答案 0 :(得分:1)

groupby之后需要reindex。您可以执行以下操作:

# use date range
f =  pd.date_range('12-01-2017', '12-31-2017',freq='7D')

df = (df
 .groupby(['store_id','product_id'])
 .apply(lambda x: x.reindex(f))
 .drop(['store_id','product_id'],axis=1)
 .reset_index()
 .rename(columns={'level_2':'date'}))

  store_id  product_id       date
0        a           1 2017-12-01
1        a           1 2017-12-08
2        a           1 2017-12-15
3        a           1 2017-12-22
4        a           1 2017-12-29