2010-08-13 7 views
1

Désolé, je suis d'accord qui a été vraiment mal écrit:jeux de données vides remplacent

Take 2: J'ai beaucoup de colonnes de données (jusqu'à 63) dans plus de 50 jeux de données. J'extrais seulement 3 colonnes de données dont j'ai besoin et je l'écris dans un nouveau fichier .csv. Il y a quelques uns de mes ensembles de données qui n'ont pas la troisième colonne de données désirée. Mais ce n'est pas grave, je peux le laisser vide (ou insérer une autre valeur comme "-" ou autre). Je ne veux pas ouvrir tous mes fichiers pour savoir quels fichiers ont quoi. Le message d'erreur que je reçois lorsque je tente d'extraire des données d'une colonne inexistante est:

IndexError: list index out of range 

Y at-il une boucle que je peux écrire pour résoudre ce problème? Je suis vraiment novice en python, et dans ma tête ça semble facile mais quand j'essaye de le faire c'est très difficile.

Merci

+2

Vous faites ** ce même chose **? Pourquoi essaieriez-vous d'extraire des données de colonnes inexistantes? Si j'étais vous, je ne ferais simplement pas cela ... (En d'autres termes, votre question est très mal écrite et assez incompréhensible. Veuillez réécrire.) – chryss

+0

Félicitations pour avoir fourni l'erreur, mais sans données d'échantillon c'est un peu difficile de comprendre ce que vous faites –

+0

Quelle chose? Quel type de jeu de données? Quelle colonne? Quel code? Quel fichier de sortie? Attendez ... ">>> depuis pychic import read_mind" "ImportError: Aucun module nommé pychic". Pardon. – ddaa

Répondre

0

Basé sur le message d'erreur, je suppose que vous avez une liste de listes qui ressemble à ceci (une simplification grossière):

[[0,1,2,3], 
[1,2,3,4,5], 
[1,2,3], 
[1,2,3]] 

Et vous essayez de faire la suivant:

pour la rangée de xrange (4): pour col dans xrange (4): # autre chose? données d'impression [ligne] [col]

Et vous obtenez votre erreur parce que l'une des valeurs ne dispose pas d'un élément à l'index 3:

+------------------------+ 
| Index: | 0 | 1 | 2 | 3 | 
+------------------------+ 
|Value: | 1 | 2 | 3 | <----- No value at index 3 
+--------------------+ 

Selon l'endroit où vous obtenez vos données à l'origine, il existe plusieurs façons d'accomplir ce que vous essayez d'accomplir.

Si vous fournissez des E/S d'échantillons, vous obtiendrez de bien meilleures réponses.

0

Je suppose que vous faites quelque chose comme:

for line in file: 
    parts = line.split() 
    blah = line[2] 

Et bla n'existe pas pour certaines lignes.

Vous pouvez vérifier la longueur des listes:

if len(parts) > 2: 
    blah = line[2] 
else: 
    blah = "" # or whatever 

Sans code exemple, il est difficile d'être plus précis, mais cela est probablement une solution rapide et facile pour ce que vous faites.

+0

merci pour cela! –

0

Au lieu de boucle à travers toutes vos données avant de commencer, vous pourriez attraper l'exception et le gérer de façon appropriée:

try: 
    a = list[57] 
except IndexError: 
    a = '-' 
Questions connexes