Como carregar um arquivo tsv em um Pandas DataFrame?


136

Eu sou novo em python e pandas. Estou tentando tsvcarregar um arquivo em um panda DataFrame.

Isto é o que estou tentando e o erro que estou recebendo:

>>> 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!

11
Para quem vem a esta resposta em 2017 ou mais, use read_csv('path_to_file', sep='\t'). Veja esta resposta abaixo
Ted Petrou

Obrigado @TedPetrou
Salomon Kabongo

Respostas:


153

Nota : A partir do 17.0 from_csvé desencorajado: use em pd.read_csvvez disso

A documentação lista uma função .from_csv que parece fazer o que você deseja:

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

Se você tem um cabeçalho, pode passar header=0.

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

4
Eu tive alguns problemas com esse método - era muito lento e falhava na indexação no final. Em vez disso, usei o read_table (), que funcionava muito mais rápido e sem o parâmetro extra.
Yurik

21
Observe que a partir da versão 17.0 from_csvé desencorajada: use em pd.read_csvvez disso!
Rafaelvalle

2
Eu tive que usar o seguinte: DataFrame.read_csv ('filepath.tsv', sep = '', header = 0)
Archie

3
Esta é uma resposta ruim; você pode ler TSV nativamente com pd.read_csv/read_table, você só precisa definir delim_whitespace=Trueousep
SMCI

3
@rafaelvalle adicionou um aviso obsoleto
Arayan Singh 15/02/19


57

Use read_table(filepath). O separador padrão é tab


1
read_table não requer nenhum parâmetro. Perfeitamente trabalhando.
Jay

19

Tente isto

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

insira a descrição da imagem aqui

Você realmente precisa corrigir o parâmetro sep .


7

abra o arquivo, salve como .csv e aplique

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

para qualquer outro formato também, basta alterar a tag sep


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

Você pode carregar o arquivo tsv diretamente no quadro de dados do pandas especificando delimitor e cabeçalho.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.