2013-01-21 1 views
0

J'essaie actuellement de créer un script assez simple qui va comparer deux DataFrames d'un fichier CSV et effectuer une fusion interne pour supprimer les doublons. Maintenant, je remarque que l'un de mes CSVs ressemble à ceci:Ignorer la première ligne dans DataFrame CSVread

Row [0]: One column 
Row [1:]: 2+ columns 

Maintenant, lorsque je tente de l'importer via pandas.csv_read (...) Je reçois l'erreur suivante

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/pandas-0.10.0-py2.7-macosx-10.5-i386.egg/pandas/io/parsers.py", line 391, in parser_f 
return _read(filepath_or_buffer, kwds) 
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/pandas-0.10.0-py2.7-macosx-10.5-i386.egg/pandas/io/parsers.py", line 207, in _read 
return parser.read() 
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/pandas-0.10.0-py2.7-macosx-10.5-i386.egg/pandas/io/parsers.py", line 624, in read 
ret = self._engine.read(nrows) 
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/pandas-0.10.0-py2.7-macosx-10.5-i386.egg/pandas/io/parsers.py", line 945, in read 
data = self._reader.read(nrows) 
File "parser.pyx", line 634, in pandas._parser.TextReader.read (pandas/src/parser.c:5795) 
File "parser.pyx", line 656, in pandas._parser.TextReader._read_low_memory (pandas/src/parser.c:6015) 
File "parser.pyx", line 734, in pandas._parser.TextReader._read_rows (pandas/src/parser.c:6892) 
File "parser.pyx", line 791, in pandas._parser.TextReader._convert_column_data (pandas/src/parser.c:7596) 
File "parser.pyx", line 1015, in pandas._parser.TextReader._get_column_name (pandas/src/parser.c:10425) 

Je suppose cela a à voir avec la première rangée, car quand je l'efface, le problème est parti. Comment puis-je ignorer ces erreurs et simplement remplir le reste avec des valeurs vides?

Best, Oliver

+4

son 'pandas.read_csv' et vous le passez' skiprows = 1' pour ignorer la première ligne –

+0

Mais y a-t-il un moyen de le faire automatiquement? Peut-être que quelqu'un a un fichier où les deux premières lignes doivent être ignorées. – oliver13

+0

Vous pouvez skier avec une variable (difficile de dire comment le faire automatiquement sans plus d'infos) ... –

Répondre

0

Je pense que la bonne réponse est que vous ne pouvez pas, en général. csv_read s'attend à ce que l'entrée soit bien formée. Tout le monde peut vouloir un comportement différent lorsque vous sortez des entrées attendues. Par exemple, si votre entrée ressemble à ceci:

0 
1,2,3 
4,5,6 
7,8,9 

Une personne peut vouloir ignorer la première ligne, une autre peut vouloir remplir NA valeurs dans les deux colonnes manquantes de la première rangée, et une autre personne peut vouloir juste lire la première colonne (déduire qu'il n'y a qu'une colonne de la première rangée, et ignorer les valeurs excédentaires sur les lignes suivantes). Les trois solutions sont raisonnables, il est donc préférable de laisser le nettoyage des données à l'utilisateur. Cela dit, si vous publiez plus d'informations sur le type d'entrée que vous essayez de nettoyer, je suis sûr que quelqu'un ici peut vous aider.

Questions connexes