Problème list index out of range error
Résolu/Fermé
Antioche75
Messages postés
15
Date d'inscription
jeudi 3 mars 2022
Statut
Membre
Dernière intervention
8 mars 2022
-
Modifié le 7 mars 2022 à 17:33
Antioche75 Messages postés 15 Date d'inscription jeudi 3 mars 2022 Statut Membre Dernière intervention 8 mars 2022 - 8 mars 2022 à 10:17
Antioche75 Messages postés 15 Date d'inscription jeudi 3 mars 2022 Statut Membre Dernière intervention 8 mars 2022 - 8 mars 2022 à 10:17
A voir également:
- List index out of range traduction
- Out of range ✓ - Forum Matériel & Système
- Input signal out of range change settings to 1600x900-60hz - Forum Windows
- Input signal out of range - Forum Matériel & Système
- Cmdlcache out of memory ✓ - Forum jeux en ligne
- Out of range écran - Forum Windows
2 réponses
yg_be
Messages postés
23526
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 avril 2025
Ambassadeur
1 577
Modifié le 7 mars 2022 à 14:01
Modifié le 7 mars 2022 à 14:01
quand tu utilises les balises de code, peux-tu préciser le langage? https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je suggères que tu ajoutes un print() avant la ligne qui te donne une erreur:
je pense que cela t'aidera à comprendre ce que fait ton code.
je suggères que tu ajoutes un print() avant la ligne qui te donne une erreur:
print(type(choices),choices)
je pense que cela t'aidera à comprendre ce que fait ton code.
Antioche75
Messages postés
15
Date d'inscription
jeudi 3 mars 2022
Statut
Membre
Dernière intervention
8 mars 2022
7 mars 2022 à 13:46
7 mars 2022 à 13:46
Désolé pour les balises de code, il s'agit de Python,
Je viens de faire comme suggéré:
Je viens de faire comme suggéré:
#%% j'ai créé ma liste de résultat (initée à vide) df_result = pd.DataFrame(columns=['marque', 'lambda','ref','score']) #%% je parcours ma table de modèles lambda for ind in lambda_df.index: marque = lambda_df['MARQUE_REF'][ind] modele_lambda = lambda_df['MODELE'][ind] ref_list = (ref_df[(ref_df['lib_marque'] == marque)]['lib_model']).to_list() print(type(choices),choices) choices = process.extract(modele_lambda, ref_list, limit=1) approx = choices[0][0] score = choices[0][1] df2 = pd.DataFrame(data = [(marque, modele_lambda, approx, score)],\ columns=['marque', 'lambda','ref','score']) df_result = pd.concat([df_result, df2], axis=0, ignore_index=True) df_result.to_csv('output_matching_groupe.csv', sep=';', index=False) ''' tdep = time.time() tfin = time.time() print(f"duree de {tfin-tdep} secondes") ''' # %%
<class 'list'> [('Guy Couach 1401', 90)] <class 'list'> [('Guy Couach 1401', 90)] <class 'list'> [('Bluewater 2460', 100)] <class 'list'> [('Windy 46 Chinook', 90)] --------------------------------------------------------------------------- IndexError Traceback (most recent call last) Input In [55], in <module> 9 print(type(choices),choices) 10 choices = process.extract(modele_lambda, ref_list, limit=1) ---> 11 approx = choices[0][0] 12 score = choices[0][1] 13 df2 = pd.DataFrame(data = [(marque, modele_lambda, approx, score)],\ 14 columns=['marque', 'lambda','ref','score']) IndexError: list index out of range
yg_be
Messages postés
23526
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 avril 2025
1 577
7 mars 2022 à 14:03
7 mars 2022 à 14:03
la ligne print() est trop haut, elle doit précéder la ligne qui donne une erreur.
Antioche75
Messages postés
15
Date d'inscription
jeudi 3 mars 2022
Statut
Membre
Dernière intervention
8 mars 2022
>
yg_be
Messages postés
23526
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 avril 2025
7 mars 2022 à 14:10
7 mars 2022 à 14:10
Je n'ai malheureusement pas l'impression que cela change grand chose, ou du moins je ne comprends pas ce
<class 'list'> []
#%% j'ai créé ma liste de résultat (initée à vide) df_result = pd.DataFrame(columns=['marque', 'lambda','ref','score']) #%% je parcours ma table de modèles lambda for ind in lambda_df.index: marque = lambda_df['MARQUE_REF'][ind] modele_lambda = lambda_df['MODELE'][ind] ref_list = (ref_df[(ref_df['lib_marque'] == marque)]['lib_model']).to_list() choices = process.extract(modele_lambda, ref_list, limit=1) print(type(choices),choices) approx = choices[0][0] score = choices[0][1] df2 = pd.DataFrame(data = [(marque, modele_lambda, approx, score)],\ columns=['marque', 'lambda','ref','score']) df_result = pd.concat([df_result, df2], axis=0, ignore_index=True) df_result.to_csv('output_matching_groupe.csv', sep=';', index=False) ''' tdep = time.time() tfin = time.time() print(f"duree de {tfin-tdep} secondes") ''' # %%
<class 'list'> [('Guy Couach 1401', 90)] <class 'list'> [('Bluewater 2460', 100)] <class 'list'> [('Windy 46 Chinook', 90)] <class 'list'> [] --------------------------------------------------------------------------- IndexError Traceback (most recent call last) Input In [58], in <module> 9 choices = process.extract(modele_lambda, ref_list, limit=1) 10 print(type(choices),choices) ---> 11 approx = choices[0][0] 12 score = choices[0][1] 13 df2 = pd.DataFrame(data = [(marque, modele_lambda, approx, score)],\ 14 columns=['marque', 'lambda','ref','score']) IndexError: list index out of range
Antioche75
Messages postés
15
Date d'inscription
jeudi 3 mars 2022
Statut
Membre
Dernière intervention
8 mars 2022
>
Antioche75
Messages postés
15
Date d'inscription
jeudi 3 mars 2022
Statut
Membre
Dernière intervention
8 mars 2022
7 mars 2022 à 14:16
7 mars 2022 à 14:16
Je crois avoir compris, c'est dû aux lignes vides ou partiellement vides dans le dataset (présence uniquement d'une marque ou d'un modèle:
Comment puis je efface les lignes vides / partiellement vides pour pallier à cela?
MARQUE_REF MODELE
Guy Couach 1401
Karnic BLUEWATER 2460
Windy 46 CHINOOK
Absolute NAVETTA 52
SLOOP
Clear AQUARIUS OPEN
Comment puis je efface les lignes vides / partiellement vides pour pallier à cela?
Antioche75
Messages postés
15
Date d'inscription
jeudi 3 mars 2022
Statut
Membre
Dernière intervention
8 mars 2022
>
Antioche75
Messages postés
15
Date d'inscription
jeudi 3 mars 2022
Statut
Membre
Dernière intervention
8 mars 2022
7 mars 2022 à 14:20
7 mars 2022 à 14:20
Ok je suis un peu rouillé, un simple dropna() devrait faire l'affaire, merci pour l'aide.
yg_be
Messages postés
23526
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 avril 2025
1 577
>
Antioche75
Messages postés
15
Date d'inscription
jeudi 3 mars 2022
Statut
Membre
Dernière intervention
8 mars 2022
7 mars 2022 à 21:53
7 mars 2022 à 21:53
moi j'ai simplement ajouté un test
pour éviter de traiter cette donnée, et passer à la suivante.
if len(choices)>0:
pour éviter de traiter cette donnée, et passer à la suivante.