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?

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.


¡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.


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"])


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)

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")


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")

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


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)
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.