Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

124
Views
Ignorar el primer espacio en CSV

Tengo un archivo CSV como este:

 Time Latitude Longitude 2021-09-12 23:13 44.63 -63.56 2021-09-14 23:13 43.78 -62 2021-09-16 23:14 44.83 -54.6

2021-09-12 23:13 está en la columna Time .

Me gustaría abrirlo usando pandas. Pero hay un problema con la primera columna. Contiene un espacio. Si lo abro usando:

 import pandas as pd points = pd.read_csv("test.csv", delim_whitespace=True)

yo obtengo

Tiempo Latitud Longitud
2021-09-12 23:13 44.630 -63.560
2021-09-14 23:13 43.780 -62.000
2021-09-16 23:14 44.830 -54.600

Pero me gustaría omitir el espacio en la primera columna en CSV ( 2021-09-12 23:13 debe estar en la columna Time ) como:

Tiempo Latitud Longitud
0 2021-09-12 23:13 44.630 -63.560
1 2021-09-14 23:13 43.780 -62.000
2 2021-09-16 23:14 44.830 -54.600

¿Cómo puedo ignorar el primer espacio cuando uso pd.read_csv ?

Por favor, no se ciña a este archivo csv. Esta es una pregunta general para omitir (no considerar como un delimitador) los primeros espacios en la primera columna. Porque todos saben que el primer espacio es parte del valor del tiempo, no un delimitador.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Intente arreglar la columna y el índice después de cargar el archivo:

 import pandas as pd points = pd.read_csv('test.csv', delim_whitespace=True) points = points.assign(Time=pd.to_datetime(df.index + ' ' + df['Time'])) \ .reset_index(drop=True)

Producción:

 >>> points Time Latitude Longitude 0 2021-09-12 23:13:00 44.63 -63.56 1 2021-09-14 23:13:00 43.78 -62.00 2 2021-09-16 23:14:00 44.83 -54.60
over 4 years ago · Santiago Trujillo Report

0

Sus datos están en 2 tipos diferentes de formatos:

  • su fila de encabezado tiene un solo espacio entre 'Latitude' y 'Longitude' .
  • las filas de "datos" parecen estar separadas por múltiples espacios.

Puede editar sus datos y agregar un segundo espacio entre latitud y longitud o engañarlo proporcionando los encabezados de las columnas por separado:

Crea un archivo:

 with open("test.csv","w") as f: f.write("""Time Latitude Longitude 2021-09-12 23:13 44.63 -63.56 2021-09-14 23:13 43.78 -62 2021-09-16 23:14 44.83 -54.6""")

Analizar archivo:

 import pandas as pd # ignore files headers, supply own, use multiple spaces as seperator df = pd.read_csv("test.csv", delimiter = " ", header=0, names = ["Time","Latitude","Longitude"]) print (df)

Producción:

 Time Latitude Longitude 0 2021-09-12 23:13 44.63 -63.56 1 2021-09-14 23:13 43.78 -62.00 2 2021-09-16 23:14 44.83 -54.60
over 4 years ago · Santiago Trujillo Report

0

Lo que ha mostrado no es un archivo csv. Punto final. Pandas read_csv es lo suficientemente versátil como para encontrar una solución alternativa que permita procesarlo. Pero en realidad es un archivo de campos de ancho fijo y debe leerse con pd.read_fwf :

 pd.read_fwf(file_name, [(0,16), (16,26), (26, 40)])

da directamente:

 Time Latitude Longitude 0 2021-09-12 23:13 44.63 -63.56 1 2021-09-14 23:13 43.78 -62.00 2 2021-09-16 23:14 44.83 -54.60

Desde su edición, solo desea decirle a read_csv que considere el primer espacio en blanco como un carácter no delimitador. No conozco una forma sencilla de hacerlo. La forma difícil es leer el archivo, reemplazar el primer espacio en todas y cada una de las líneas con un carácter diferente. Luego, envía ese archivo modificado a read_csv con un convertidor personalizado para que la primera columna vuelva a cambiar el carácter especial a un espacio:

 with open('test.csv') as fdin, open('test2.csv', 'w') as fdout): fdout.write(next(fdin) # do not process the header line for line in fdin: fdout.write(line.replace(' ', '_', 1) df = pd.read_csv('test2.csv', delim_whitespace=True, converters = {'Time': lambda x: x.replace('_', ' ')})

También da:

 Time Latitude Longitude 0 2021-09-12 23:13 44.63 -63.56 1 2021-09-14 23:13 43.78 -62.00 2 2021-09-16 23:14 44.83 -54.60
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!