Tengo un calendario de datos del tipo de trabajo diario: el día es festivo o no. Quiero crear nuevas características:

  1. El valor de la celda es el número de días festivos de la semana.
  2. El valor de la celda es el número de vacaciones en la ventana N (ventanas derecha e izquierda). En el ejemplo, N = 5 (e incluido el valor actual)

Ejemplo:

         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
...
1
gushart 22 feb. 2021 a las 12:35

1 respuesta

La mejor respuesta

Creo que necesitas agrupar para cada 7 valores y agregar sum y para el segundo se usa Series.rolling:

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
1
jezrael 24 feb. 2021 a las 06:45