Cómo leer archivos con valores separados por espacios en pandas


Respuestas:


141

agregar delim_whitespace=Trueargumento, es más rápido que regex.


Debería agregar eso y eliminarlo, delimiter=' 'ya que son mutuamente excluyentes en versiones recientes.
matanster

2
@matanster: delimiter=' 'es muy frágil, dice esperar un solo espacio. Sin pestañas, línea de noticias, espacios múltiples, espacios en blanco que no se rompan, combinación de estos, etc., delimiter='\s+'es lo que pandas recomienda y es más robusto.
smci

29

puedes usar regex como delimitador:

pd.read_csv("whitespace.csv", header=None, delimiter=r"\s+")

2
Esto ayuda cuando tiene más que un espacio como delimitador. En las versiones actuales se debe agregar engine = "python"para evitar una advertencia.
Jürg Merlin Spaak

1

Si no puede hacer que el análisis de texto funcione usando la respuesta aceptada (por ejemplo, si su archivo de texto contiene filas no uniformes), entonces vale la pena intentarlo con la biblioteca csv de Python; aquí hay un ejemplo usando un dialecto definido por el usuario :

 import csv

 csv.register_dialect('skip_space', skipinitialspace=True)
 with open(my_file, 'r') as f:
      reader=csv.reader(f , delimiter=' ', dialect='skip_space')
      for item in reader:
          print(item)

Eso no es cierto. Funciona con python 3.8 y pandas. La pregunta pide leer un archivo de texto en pandas.
Spas

Ah, lo siento, he actualizado mi respuesta para dar cuenta de esto.
Pierz
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.