¿Cómo cargar un archivo tsv en un Pandas DataFrame?

136

Soy nuevo en python y pandas. Estoy tratando de tsvcargar un archivo en pandas DataFrame.

Esto es lo que intento y el error que obtengo:

>>> df1 = DataFrame(csv.reader(open('c:/~/trainSetRel3.txt'), delimiter='\t'))

Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    df1 = DataFrame(csv.reader(open('c:/~/trainSetRel3.txt'), delimiter='\t'))
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 318, in __init__
    raise PandasError('DataFrame constructor not properly called!')
PandasError: DataFrame constructor not properly called!
Chillido búho
fuente
11
Para aquellos que lleguen a esta respuesta en 2017+, use read_csv('path_to_file', sep='\t'). Vea esta respuesta a continuación
Ted Petrou el
Gracias @TedPetrou
Salomon Kabongo

Respuestas:

153

Nota : A partir de 17.0 from_csvse desaconseja: utilice pd.read_csven su lugar

La documentación enumera una función .from_csv que parece hacer lo que desea:

DataFrame.from_csv('c:/~/trainSetRel3.txt', sep='\t')

Si tiene un encabezado, puede pasar header=0.

DataFrame.from_csv('c:/~/trainSetRel3.txt', sep='\t', header=0)
huon
fuente
44
Tuve algunos problemas con este método: fue muy lento y la indexación falló al final. En cambio, usé read_table (), que funcionó mucho más rápido y sin el parámetro adicional.
Yurik
21
Tenga en cuenta que a partir de 17.0 from_csvse desaconseja: ¡use pd.read_csven su lugar!
rafaelvalle
2
Tuve que usar lo siguiente: DataFrame.read_csv ('filepath.tsv', sep = '', header = 0)
Archie
3
Esta es una mala respuesta; puedes leer TSV de forma nativa pd.read_csv/read_table, solo tienes que configurar delim_whitespace=Trueosep
smci
3
@rafaelvalle agregó un aviso obsoleto
Arayan Singh
84

A partir del 17.0 from_csvse desaconseja.

Use pd.read_csv(fpath, sep='\t')o pd.read_table(fpath).

Kamil Sindi
fuente
44
Nota: read_table está en desuso desde la versión 0.24.0. Utilice pandas.read_csv () en su lugar.
ManuelSchneid3r
57

Uso read_table(filepath). El separador predeterminado es pestaña

Wes McKinney
fuente
1
read_table no requiere ningún parámetro. Perfectamente trabajando.
Jay
19

Prueba esto

df = pd.read_csv("rating-data.tsv",sep='\t')
df.head()

ingrese la descripción de la imagen aquí

Realmente necesitas arreglar el parámetro sep .

Mohsin Ashraf
fuente
7

abrir archivo, guardar como .csv y luego aplicar

df = pd.read_csv('apps.csv', sep='\t')

para cualquier otro formato también, simplemente cambie la etiqueta sep

ankit srivastava
fuente
0
df = pd.read_csv('filename.csv', sep='\t', header=0)

Puede cargar el archivo tsv directamente en el marco de datos de pandas especificando el delimitador y el encabezado.

Jackson
fuente