Bonjour,
j'ai besoin de votre aide , j'ai un dataframe on va dire comme celui là mais avec un volume énorme de données
Nom : df.PNG
Affichages : 81
Taille : 2,7 Ko
le but est d'arriver à quelque chose de similaire à ceci ( pour chaque événement les heures qu'il inclut)
Nom : df2.PNG
Affichages : 64
Taille : 5,3 Ko
voilà à quoi ressemble le code que j'ai fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
df_hours=pd.DataFrame(columns=range(1,25))
for i in df.index:
    hours={}
    h_start=df.loc[i,'STARTTIME'].hour
    h_end=df.loc[i,'ENDTIME'].hour
    for h in range(h_start,h_end):
         hours[h]=[1]
    df_hours=df_hours.append(pd.DataFrame.from_dict(hours,orient='columns'))   
df_hours.index=df.index
df_new=df.merge(df_hours,left_index=True,right_index=True).fillna(0)
ce qui me permet d'avoir un dataframe comme ceci
Nom : df_new.PNG
Affichages : 62
Taille : 5,1 Ko

ensuite je fais un melt et selectionne là ou s'est égal à un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
df_new=pd.melt(df_new, id_vars=['Event','StartTime','EndTime'], var_name=['HOUR'])
Nom : result.PNG
Affichages : 81
Taille : 23,7 Ko

Alors cela fonctionne très bien j'ai le resultat que je voulais mais j'ai l'impression de mal faire les choses surtout que le volume de données est très grand ça prend un temps d'exécution pas possile
du coup je me demande si vous avez une autre idée pour faire les choses plus rapidement

Merci