Bonjour,

Je suis entrain de travaillé sur plusieurs dataframe assez lourdes sur python.

J'ai deux tables

df1_na, c'est ma table d'opération avec des informations de station et d'heure
df1_2, c'est ma datable de méteo avec un relevé sur une station et toutes les heures


J'ai plusieurs station dans mes fichier et je cherche a faire un truc annuel, donc plusieurs mois.
Mon objectif c'est que pour chaque couple origin_code et actual_time je trouve mon humidité, ma température et mon point de rosé

Pour trouver l'heure la plus proche je prend juste le direct supérieur. C'est plus simple.

J'ai commencer a codé avec une boucle, sauf que c'est vraiment super long. Est ce quelqu'un a une idée pour passer par une fonction.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
while x<len(df1_na):
    df1_2=df1_3
    Station=df1_na.iloc[x,df1_na.columns.get_loc('origin_code')]
    Day=df1_na.iloc[x,df1_na.columns.get_loc('actual_time')]
    ### On construit une liste de date autour de la date que l'on cherche
    Date=df1_na.iloc[x,df1_na.columns.get_loc('actual_day')]
    Date2=Date+timedelta(days=1)
    Date1=Date-timedelta(days=1)
    Liste_date=[]
    Liste_date.append(Date1)
    Liste_date.append(Date)
    Liste_date.append(Date2)
 
 
    ###On filtre par Station puis par date avec les deux jour entourant la date que l'on cherche. 
    df1_2=df1_2[(df1_2.station==Station)]
    df1_2=df1_2[(df1_2['day'].isin(Liste_date))]
    df1_2=df1_2[(df1_2.time>=Day)]
    df1_2.sort_values(by=['time'],ascending=True)
 
    if len(df1_2)>0:
        df1_na.iloc[x,df1_na.columns.get_loc('humidité')]=df1_2.iloc[0,df1_2.columns.get_loc('rel_humidity')]
        df1_na.iloc[x,df1_na.columns.get_loc('température')]=df1_2.iloc[0,df1_2.columns.get_loc('temp_c')]
        df1_na.iloc[x,df1_na.columns.get_loc('point de rosée')]=df1_2.iloc[0,df1_2.columns.get_loc('dew_point_c')]
        print((x/len(df1_na))*100)
        compteur_1+=1
 
    x+=1
J'ai essayé avec d'autre fonction style iterrows, mais ça ne fonctionne pas.

Merci d'avance.