Ignorer les lignes pendant les pandas d'importation CSV

97

J'essaie d'importer un fichier .csv en utilisant pandas.read_csv(), mais je ne veux pas importer la 2ème ligne du fichier de données (la ligne avec index = 1 pour l'indexation 0).

Je ne vois pas comment ne pas l'importer car les arguments utilisés avec la commande semblent ambigus:

Sur le site Web des pandas:

skiprows : de type liste ou entier

Numéros de ligne à ignorer (indexés à 0) ou nombre de lignes à ignorer (entier) au début du fichier. "

Si je mets skiprows=1les arguments, comment sait-il s'il faut sauter la première ligne ou sauter la ligne avec l'index 1?

thosphore
la source
2
Je suppose que comme il l'indique, il peut être "de type liste ou entier" et vous donne ensuite deux options (soit sauter des lignes, soit sauter # lignes au début), puis si vous lui donnez la liste [1], il sautera simplement la ligne 1 (2e rangée). Si vous lui aviez donné un entier (par exemple 10), il ignorera les 10 premières lignes.
Ffisegydd
1
Super qui a fonctionné. Merci beaucoup. Je me suis juste demandé comment cela différencierait l'index et l'int. [] Est la réponse.
thosphor

Réponses:

144

Vous pouvez essayer vous-même:

>>> import pandas as pd
>>> from StringIO import StringIO
>>> s = """1, 2
... 3, 4
... 5, 6"""
>>> pd.read_csv(StringIO(s), skiprows=[1], header=None)
   0  1
0  1  2
1  5  6
>>> pd.read_csv(StringIO(s), skiprows=1, header=None)
   0  1
0  3  4
1  5  6
alko
la source
Oui merci, j'avais juste besoin de savoir que l'index était spécifié entre crochets [].
thosphor
11
dans Python 3: from io import StringIO
Dima Lituiev
^ Pas besoin d'importer du tout, il est directement accessible en tant que pd.compat.StringIO .
cs95
30

Je n'ai pas encore la réputation de commenter, mais je veux ajouter à alko la réponse pour référence.

À partir de la documentation :

skiprows: une collection de nombres pour les lignes du fichier à ignorer. Peut également être un entier pour sauter les n premières lignes

Hugo
la source
14

J'ai eu le même problème en exécutant les skiprows lors de la lecture du fichier csv. Je donnais skip_rows = 1 cela ne fonctionnera pas

Un exemple simple donne une idée de l'utilisation de skiprows lors de la lecture d'un fichier csv.

import pandas as pd

#skiprows=1 will skip first line and try to read from second line
df = pd.read_csv('my_csv_file.csv', skiprows=1)  ## pandas as pd

#print the data frame
df
Viraj Wadate
la source
1

Toutes ces réponses manquent un point important - la nième ligne est la nième ligne du fichier, et non la nième ligne du jeu de données. J'ai une situation où je télécharge des données désuètes de jauge de flux de l'USGS. La tête de l'ensemble de données est commentée avec '#', la première ligne après cela sont les étiquettes, vient ensuite une ligne qui décrit les types de date et les données elles-mêmes. Je ne sais jamais combien il y a de lignes de commentaires, mais je sais quelles sont les deux premières lignes. Exemple:

----------------------------- AVERTISSEMENT -------------------- --------------

Certaines des données que vous avez obtenues de cette base de données de l'US Geological Survey

peut ne pas avoir reçu l'approbation du directeur. ... agency_cd site_no datetime tz_cd 139719_00065 139719_00065_cd

5s 15s 20d 6s 14n 10s USGS 08041780 2018-05-06 00:00 CDT 1.98 A

Ce serait bien s'il y avait un moyen de sauter automatiquement la nième ligne ainsi que la nième ligne.

En guise de note, j'ai pu résoudre mon problème avec:

import pandas as pd
ds = pd.read_csv(fname, comment='#', sep='\t', header=0, parse_dates=True)
ds.drop(0, inplace=True)
EBo
la source
-1

skip[1] sautera la deuxième ligne, pas la première.

shanky
la source
-8

Aussi assurez - vous que votre fichier est en fait un fichier CSV. Par exemple, si vous aviez un fichier .xls et avez simplement changé l'extension de fichier en .csv, le fichier ne sera pas importé et donnera l'erreur ci-dessus. Pour vérifier si c'est votre problème, ouvrez le fichier dans Excel et il dira probablement:

"Le format de fichier et l'extension de 'Filename.csv' ne correspondent pas. Le fichier est peut-être corrompu ou dangereux. À moins que vous ne fassiez confiance à sa source, ne l'ouvrez pas. Voulez-vous quand même l'ouvrir?"

Pour réparer le fichier: ouvrez le fichier dans Excel, cliquez sur «Enregistrer sous», choisissez le format de fichier sous lequel enregistrer (utilisez .cvs), puis remplacez le fichier existant.

C'était mon problème et j'ai corrigé l'erreur pour moi.

Justin R. Locke
la source
9
C'est peut-être votre problème, mais cela n'a rien à voir avec la question ni ne tente d'y répondre. Cela explique simplement un autre problème supplémentaire que vous avez rencontré. Vous pourriez aussi dire "n'oubliez pas de charger votre ordinateur portable, le mien n'avait pas de batterie et j'ai perdu toutes mes modifications. C'était mon problème"
JC Rocamonde