我的数据集的这个例子。通过组合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行。
请帮助!谢谢你们
答案 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