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.
J'ai essayé avec d'autre fonction style iterrows, mais ça ne fonctionne pas.
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
Merci d'avance.
Partager