Traitement de données par une boucle for

lessej -  
jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
J'ai un projet de modélisation en python à faire où je dois traiter des données de précipitations et de températures de plusieurs villes. Le problème c'est qu'elles ont toutes des tailles différentes.
J'ai donc crée un tableau avec les dates associés à chaque données et je voulais faire une boucle pour garder uniquement les dates communes de toutes les villes.

Je met la boucle for (qui ne marche, je vois pas pourquoi d'ailleurs).

A=[]
for i in range (len(DateCap)-1):
    
    for j in range (len(DateMari)-1):
        
        if DateMari[j]== DateCap[i]:
            A.append(DateMari[j])
            
        else:
            DateMari[j]= DateMari[j+1]
            
print(len(A))


DateCap correspond à la ville qui a le moins de date, c'est elle que j'ai choisi comme référence.
Configuration: Windows / Chrome 90.0.4430.93
A voir également:

2 réponses

jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
Bonjour,

Les lignes 9 et 10 ??? ça ne sert à rien. Il ne faut pas mettre -1 sur les ranges. Et surtout il faudrait étudier le type de ton champ date, un champ texte, ou datetime, ... : https://python-simple.com/python-modules-autres/date-et-temps.php

Car ça, cela fonctionne :
DateCap=["01/04/2020","01/01/2020","01/02/2020","01/05/2020"]
DateMari=["01/02/2020","02/01/2020","01/04/2020","01/05/2020"]
A=[]
for i in range (len(DateCap)):
   for j in range (len(DateMari)):
      if DateMari[j]== DateCap[i]:
         A.append(DateMari[j])
print(A) 


Mais avec un champ datetime, il faudrait extraire la date pour le test d'égalité.

0
lessej
 
Merci pour votre réponse!
Les dates sont écrite comme des nombres j'ai l'impression, par exemple pour 20-01-2020 on a 20200120.
Je vais essayer de les passer en datetime et refaire la boucle
0
jee pee Messages postés 41520 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
en nombre aussi cela devrait fonctionner fait un
print(type(DateMari[j]))
pour vérifier
0