Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

154
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda