una txt read leer importar datos con como columnas columna cargar archivos archivo python macos pandas import tab-delimited

txt - leer columnas en python



Lectura de archivos delimitados por tabulaciones con Pandas: funciona en Windows, pero no en Mac (2)

He estado leyendo un archivo de datos delimitado por tabulaciones en Windows con Pandas / Python sin ningún problema. El archivo de datos contiene notas en las primeras tres líneas y luego sigue con un encabezado.

df = pd.read_csv(myfile,sep=''/t'',skiprows=(0,1,2),header=(0))

Ahora estoy tratando de leer este archivo con mi Mac. (La primera vez que uso Python en Mac.) Me sale el siguiente error.

pandas.parser.CParserError: Error tokenizing data. C error: Expected 1 fields in line 8, saw 39

Si establece el argumento error_bad_lines para read_csv en False , obtengo la siguiente información, que continúa hasta el final de la última fila.

Skipping line 8: expected 1 fields, saw 39 Skipping line 9: expected 1 fields, saw 125 Skipping line 10: expected 1 fields, saw 125 Skipping line 11: expected 1 fields, saw 125 Skipping line 12: expected 1 fields, saw 125 Skipping line 13: expected 1 fields, saw 125 Skipping line 14: expected 1 fields, saw 125 Skipping line 15: expected 1 fields, saw 125 Skipping line 16: expected 1 fields, saw 125 Skipping line 17: expected 1 fields, saw 125 ...

¿Necesito especificar un valor para el argumento de codificación ? Parece que no debería hacerlo porque leer el archivo funciona bien en Windows.


La pista más importante es que todas las filas se devuelven en una línea. Esto indica que los terminadores de línea se están ignorando o no están presentes.

Puede especificar el terminador de línea para csv_reader. Si está en una Mac, las líneas creadas terminarán con /r lugar del estándar de Linux /n o mejor aún, los enfoques de tirantes y cinturón de las ventanas con /r/n .

pandas.read_csv(filename, sep=''/t'', lineterminator=''/r'')

También puede abrir todos sus datos utilizando el paquete de códecs. Esto puede aumentar la robustez a expensas de la velocidad de carga de documentos.

import codecs doc = codecs.open(''document'',''rU'',''UTF-16'') #open for reading with "universal" type set df = pandas.read_csv(doc, sep=''/t'')


Otra opción sería agregar engine=''python'' al comando pandas.read_csv(filename, sep=''/t'', engine=''python'')