每种产品的销售滞后

时间:2018-08-18 22:01:00

标签: python pandas

晚上好

我有以下数据框:

print(dd)
dt_op      quantity   product_code
20/01/18      1            613
21/01/18      8            611
21/01/18      1            613 
...

我正尝试获得滞后的Sales,但是以下代码也也通过product_code计算它们:

dd["Lagged_Sales"] = [dd.loc[dd['dt_op'].between(d - pd.Timedelta(days = 15), d), 'quantity'].sum() \
                for d in dd['dt_op']]

我想将dd [“ Lagged_Sales”]定义为过去15天售出的“数量”的总和,用于**每种不同的产品;

最终,对于“ dt_op” “ product_code” 中的i。

print(final_dd)

dt_op      quantity   product_code     Lagged Sales
20/01/18      1            613               1
21/01/18      8            611               8
21/01/18      1            613               2
...

谢谢

2 个答案:

答案 0 :(得分:1)

IIUC,与pd.Grouper和“ product_code”分组:

df.dt_op = pd.to_datetime(df.dt_op, errors='coerce')
df.groupby([pd.Grouper(key='dt_op', freq='15D'), 'product_code']).quantity.sum()

dt_op       product_code
2018-01-20  611             8
            613             2
Name: quantity, dtype: int64

答案 1 :(得分:1)

rolling的频率使用15d

df.set_index('dt_op').groupby('product_code').rolling('15d').quantity.sum()

product_code  dt_op
611           2018-01-21    8.0
613           2018-01-20    1.0
              2018-01-21    2.0
Name: quantity, dtype: float64