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!
Coruja
fonte
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)
huon
fonte
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
84

A partir de 17.0 from_csvé desencorajado.

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

Kamil Sindi
fonte
4
Nota: read_table está obsoleto desde a versão 0.24.0. Use pandas.read_csv ().
ManuelSchneid3r 31/03/19
57

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

Wes McKinney
fonte
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 .

Mohsin Ashraf
fonte
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

ankit srivastava
fonte
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.

Jackson
fonte