由两个分类列定义的熊猫数据帧的加权时间聚合

考虑以下关于三个工厂的日常生产的时间序列数据框架:一个只有两个产品(A和B)的公司的f1,f2和f3。应考虑给定产品在给定日期缺少工厂数据的情况。设为0。

import datetime
d = {
    1: {'date': datetime.datetime(2000,1,1), 'Product': 'A', 'Factory': 'f1', 'number': 10},
    2: {'date': datetime.datetime(2000,1,1),'Product': 'B', 'Factory': 'f1', 'number': 15},
    3: {'date': datetime.datetime(2000,1,1),'Product': 'A', 'Factory': 'f2', 'number': 5},
    4: {'date': datetime.datetime(2000,1,1),'Product': 'A', 'Factory': 'f3', 'number': 6},
    5: {'date': datetime.datetime(2000,1,2),'Product': 'A', 'Factory': 'f2', 'number': 10},
    6: {'date': datetime.datetime(2000,1,2),'Product': 'B', 'Factory': 'f3', 'number': 17},
    7: {'date': datetime.datetime(2000,1,2),'Product': 'A', 'Factory': 'f3', 'number': 89},
    8: {'date': datetime.datetime(2000,1,2),'Product': 'A', 'Factory': 'f1', 'number': 4},
    9: {'date': datetime.datetime(2000,1,2),'Product': 'B', 'Factory': 'f2', 'number': 4},
    10: {'date': datetime.datetime(2000,1,3),'Product': 'A', 'Factory': 'f2', 'number': 1},
    11: {'date': datetime.datetime(2000,1,3),'Product': 'B', 'Factory': 'f3', 'number': 7},
    12: {'date': datetime.datetime(2000,1,3),'Product': 'A', 'Factory': 'f1', 'number': 9},
    13: {'date': datetime.datetime(2000,1,4),'Product': 'A', 'Factory': 'f3', 'number': 41},
    14: {'date': datetime.datetime(2000,1,4),'Product': 'B', 'Factory': 'f4', 'number': 30},
}
dff = pd.DataFrame.from_dict(d).T
dff.groupby(['date','Factory','Product']).sum()

Output of the groupby

我希望能够计算最近X天内每个工厂的平均产量,其中X为参数。例如,如果X = 2,则对于f3的日期(2000,1,4),我们总共有41个产品A的产品(41个来自(2000,1,4),0个来自(2000,1,3) )和产品B的总计7项((来自(2000,1,4)的0和来自(2000,1,3)的7)。这意味着(7 + 41)/ 2 = 24“平均每个产品”(此指标由我定义)。如何编写实现此目标的智能聚合代码?我尝试了许多聚合,但无法得出结果。例如,我期望这样的事情:

dff.groupby(['date','Factory','Product']).sum().rolling(2).sum()

是第一步,但是滚动似乎并不是我想要的日期。