J'ai des données de calendrier de type dayworks - le jour est le jour férié ou non. Je souhaite créer de nouvelles fonctionnalités:

  1. La valeur de la cellule est le nombre de jours fériés dans la semaine.
  2. La valeur de la cellule est le nombre de jours fériés dans la fenêtre N (fenêtres droite et gauche). Dans l'exemple - N = 5 (et y compris la valeur actuelle)

Exemple:

         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 févr. 2021 à 12:35

1 réponse

Meilleure réponse

Je pense que vous avez besoin de regrouper pour chaque 7 valeurs et agréger sum et pour le second est utilisé 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 févr. 2021 à 06:45