Python 如何根据定义的日期范围为每个组生成更多行?
这是我的数据集的示例。通过结合商店id和产品id,您可以拥有唯一的idPython 如何根据定义的日期范围为每个组生成更多行?,python,pandas,Python,Pandas,这是我的数据集的示例。通过结合商店id和产品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',fr
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')
预期结果(此日期范围内重复的门店id和产品id)
因此,最终,我需要的是,每个store_id和product_id组合将基于data_range函数多出X行
请帮忙!谢谢大家需要在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
你能提供一个预期产出的具体例子吗?您是否正在寻找一种可以生成全新的
store\u id
和product\u id
值的解决方案,或者您是否需要将每一行复制指定的次数,并且每个重复的store\u id,product\u id
行都有不同的日期?谢谢您的回复。我已经编辑了问题,请检查此解决方案中的f
是什么?
# 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