如何根据定义的日期范围为每个组生成更多行?

2024-05-12 08:59:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据集的这个例子。通过组合商店标识和产品标识,您可以拥有唯一的标识

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   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\u id和product\u id组合将有X个以上的行,基于data\u range函数。你知道吗

请帮帮我!谢谢你们


Tags: 数据storeiddate产品时间rangeproduct
1条回答
网友
1楼 · 发布于 2024-05-12 08:59:51

groupby之后需要^{}。您可以执行以下操作:

# 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

相关问题 更多 >