Cargar datos de txt con pandas

159

Estoy cargando un archivo txt que contiene una mezcla de datos flotantes y de cadena. Quiero almacenarlos en una matriz donde puedo acceder a cada elemento. Ahora solo estoy haciendo

import pandas as pd

data = pd.read_csv('output_list.txt', header = None)
print data

Esta es la estructura del archivo de entrada: 1 0 2000.0 70.2836942112 1347.28369421 /file_address.txt.

Ahora los datos se importan como una columna única. ¿Cómo puedo dividirlo para almacenar diferentes elementos por separado (para poder llamar data[i,j])? ¿Y cómo puedo definir un encabezado?

albus_c
fuente

Respuestas:

217

Puedes usar:

data = pd.read_csv('output_list.txt', sep=" ", header=None)
data.columns = ["a", "b", "c", "etc."]

Agregue sep=" "su código, dejando un espacio en blanco entre las comillas. Entonces los pandas pueden detectar espacios entre valores y ordenarlos en columnas. Las columnas de datos son para nombrar sus columnas.

pietrovismara
fuente
¡Gracias! ¿Cómo puedo acceder a un elemento de la tabla?
albus_c
si desea llamar a una columna, use data.a si llamó a la columna "a".
pietrovismara
1
O si desea llamar a una sola fila, puede usar data.a [1] (este ejemplo llama a la primera fila de la columna)
pietrovismara
¡Excelente! Eso solucionó todo
albus_c
87

Me gustaría agregar a las respuestas anteriores, podría usar directamente

df = pd.read_fwf('output_list.txt')

fwf significa líneas formateadas de ancho fijo.

Meenakshi Ravisankar
fuente
38

La solución de @ Pietrovismara es correcta, pero me gustaría agregar: en lugar de tener una línea separada para agregar nombres de columna, es posible hacerlo desde pd.read_csv.

df = pd.read_csv('output_list.txt', sep=" ", header=None, names=["a", "b", "c"])
Sam Perry
fuente
26

puedes usar esto

import pandas as pd
dataset=pd.read_csv("filepath.txt",delimiter="\t")
ramakrishnareddy
fuente
Como puede ver en esta respuesta, 'sep' y 'delimeter' son lo mismo :) stackoverflow.com/a/49533103
Давид Шико
13

Si no tiene un índice asignado a los datos y no está seguro de cuál es el espacio, puede usarlo para permitir que los pandas asignen un índice y busquen múltiples espacios.

df = pd.read_csv('filename.txt', delimiter= '\s+', index_col=False)
bfree67
fuente
3
De manera equivalente, puede especificar el argumento más detallado en delim_whitespace=Truelugar del '\s+'delimitador
ALollz
8

Puedes hacer lo siguiente:

import pandas as pd
df = pd.read_csv('file_location\filename.txt', delimiter = "\t")

(como, df = pd.read_csv ('F: \ Desktop \ ds \ text.txt', delimitador = "\ t")

tulsi kumar
fuente
6

Según los últimos cambios en pandas, puede usar, read_csv, read_table está en desuso:

import pandas as pd
pd.read_csv("file.txt", sep = "\t")
pari
fuente
5

Puede importar el archivo de texto usando el comando read_table de la siguiente manera:

import pandas as pd
df=pd.read_table('output_list.txt',header=None)

El preprocesamiento deberá hacerse después de cargar

Kaustubh J
fuente
1

Por lo general, primero miro los datos o simplemente trato de importarlos y hago data.head (), si ve que las columnas están separadas con \ t, debe especificar lo sep="\t"contrario sep = " ".

import pandas as pd     
data = pd.read_csv('data.txt', sep=" ", header=None)
Mohamed Berrimi
fuente