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

Respuestas:

141

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

HYRY
fuente
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+")

fuente
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)
Pierz
fuente
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