Omitir filas durante la importación de pandas csv


99

Estoy tratando de importar un archivo .csv usando pandas.read_csv(), sin embargo, no quiero importar la segunda fila del archivo de datos (la fila con índice = 1 para indexación 0).

No veo cómo no importarlo porque los argumentos usados ​​con el comando parecen ambiguos:

Desde el sitio web de pandas:

skiprows : tipo lista o entero

Números de fila para omitir (indexados en 0) o número de filas para omitir (int) al comienzo del archivo ".

Si pongo skiprows=1los argumentos, ¿cómo sabe si debe omitir la primera fila o la fila con el índice 1?


2
Supongo que, como dice, puede ser "como una lista o un número entero" y luego le da dos opciones (omitir filas o omitir # filas al principio), luego, si le da la lista [1], simplemente omitirá la fila 1 (segunda fila). Si le hubiera dado un número entero (por ejemplo, 10), omitiría las primeras 10 filas.
Ffisegydd

1
Genial que funcionó. Muchas gracias. Solo me preguntaba cómo se diferenciaría entre el índice y el int. [] es la respuesta.
tósforo

Respuestas:


150

Puedes probar tú mismo:

>>> 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

Sí, gracias, solo necesitaba saber que el índice se especificó entre corchetes [].
tósforo

11
en Python 3: from io import StringIO
Dima Lituiev

^ No es necesario importar en absoluto, es directamente accesible como pd.compat.StringIO .
cs95

30

Todavía no tengo reputación para comentar, pero quiero agregar a la respuesta de alko para obtener más referencias.

De los documentos :

skiprows: una colección de números para que las filas del archivo se salten. También puede ser un número entero para omitir las primeras n filas


14

Tuve el mismo problema mientras ejecutaba los skiprows mientras leía el archivo csv. Me estaba poniendo skip_rows = 1 esto no funcionará

Un ejemplo simple da una idea de cómo usar skiprows mientras lee un archivo 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

1

Todas estas respuestas pasan por alto un punto importante: la n-ésima línea es la n-ésima línea del archivo y no la n-ésima fila del conjunto de datos. Tengo una situación en la que descargo algunos datos anticuados del medidor de flujo del USGS. El encabezado del conjunto de datos se comenta con '#', la primera línea después de eso son las etiquetas, luego viene una línea que describe los tipos de fecha y, por último, los datos en sí. Nunca sé cuántas líneas de comentarios hay, pero sé cuáles son las primeras dos filas. Ejemplo:

----------------------------- ADVERTENCIA -------------------- --------------

Algunos de los datos que ha obtenido de esta base de datos del Servicio Geológico de EE. UU.

puede que no haya recibido la aprobación del Director. ... 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

Sería bueno si hubiera una manera de omitir automáticamente la enésima fila y la enésima línea.

Como nota, pude solucionar mi problema con:

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

-1

skip[1] saltará la segunda línea, no la primera.


-8

También asegúrese de que su archivo sea en realidad un archivo CSV. Por ejemplo, si tenía un archivo .xls y simplemente cambió la extensión del archivo a .csv, el archivo no se importará y dará el error anterior. Para verificar si este es su problema, abra el archivo en Excel y probablemente dirá:

"El formato de archivo y la extensión de 'Filename.csv' no coinciden. El archivo podría estar dañado o no ser seguro. A menos que confíe en su fuente, no lo abra. ¿Quiere abrirlo de todos modos?"

Para arreglar el archivo: abra el archivo en Excel, haga clic en "Guardar como", elija el formato de archivo para guardar como (use .cvs), luego reemplace el archivo existente.

Este era mi problema y solucionó el error por mí.


10
Este puede haber sido su problema, pero no tiene nada que ver con la pregunta ni intenta responderla. Simplemente explica algún otro problema adicional que tuvo. También podrías decir "también recuerda cargar tu computadora portátil, la mía no tenía batería y perdí todos mis cambios. Ese era mi problema"
JC Rocamonde
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.