Python 如何使用pandas中的静态窗口计算最后和前N个值来填充

Python 如何使用pandas中的静态窗口计算最后和前N个值来填充,python,pandas,Python,Pandas,我有一个日工类型的日历数据-这一天是否是假日。 我想创建一个新的功能: 单元格中的值是一周中的假期数 单元格中的值是N窗口(右窗口和左窗口)中的假日数。示例中-N=5(包括当前值) 例如: is_holiday feature_1 feature_2 idx 0 0 2 0 1 0 2

我有一个日工类型的日历数据-这一天是否是假日。 我想创建一个新的功能:

  • 单元格中的值是一周中的假期数
  • 单元格中的值是N窗口(右窗口和左窗口)中的假日数。示例中-N=5(包括当前值)
  • 例如:

             is_holiday   feature_1 feature_2
    idx                                 
    0          0              2         0     
    1          0              2         1
    2          0              2         2
    3          0              2         2
    4          0              2         2
    5          1              2         2
    6          1              2         2
    7          0              3         3
    8          0              3         4
    9          0              3         5
    10         0              3         4
    11         1              3         3  
    12         1              3         3
    13         1              3         3
    ...
    

    我认为您需要对每7个值进行分组,并聚合
    sum
    ,然后使用第二个值:


    谢谢!这就是我想要的need@gushart-太好了!我还考虑不使用上面的
    11
    -
    5
    +实际值+
    5下面的
    ,但输出不匹配更多,因此使用
    10
    。顺便说一句,最后的值也不匹配,可能是f2中的打字错误,哦,现在我明白了。。。嗯,给我一个小的,相当尖锐的,如果我的答案是错误的,怎么算呢?我只希望输入错误,因为只有一个
    3
    是不同的。@gushart-答案被编辑了,你能检查一下吗?
    df['f1'] = df.groupby(df.index // 7)['is_holiday'].transform('sum')
    df['f2'] = df['is_holiday'].rolling(9, center=True, min_periods=1).sum().astype(int)
    print (df)
         is_holiday  feature_1  feature_2  f1  f2
    idx                                          
    0             0          2          0   2   0
    1             0          2          1   2   1
    2             0          2          2   2   2
    3             0          2          2   2   2
    4             0          2          2   2   2
    5             1          2          2   2   2
    6             1          2          2   2   2
    7             0          3          3   3   3
    8             0          3          4   3   4
    9             0          3          5   3   5
    10            0          3          4   3   4
    11            1          3          3   3   3
    12            1          3          3   3   3
    13            1          3          3   3   3