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

le but est d'arriver à quelque chose de similaire à ceci ( pour chaque événement les heures qu'il inclut)

voilà à quoi ressemble le code que j'ai fait
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

ensuite je fais un melt et selectionne là ou s'est égal à un
df_new=pd.melt(df_new, id_vars=['Event','StartTime','EndTime'], var_name=['HOUR'])

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
Partager