Come caricare un file tsv in un Pandas DataFrame?


136

Sono nuovo di Python e Panda. Sto cercando di tsvcaricare un file in un panda DataFrame.

Questo è quello che sto provando e l'errore che sto ricevendo:

>>> 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
Per coloro che arrivano a questa risposta nel 2017+, utilizzare read_csv('path_to_file', sep='\t'). Vedi questa risposta di seguito
Ted Petrou,

Grazie @TedPetrou
Salomon Kabongo il

Risposte:


153

Nota : A partire da 17.0 from_csvè sconsigliato: utilizzare pd.read_csvinvece

La documentazione elenca una funzione .from_csv che sembra fare quello che vuoi:

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

Se hai un'intestazione, puoi passare header=0.

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

4
Ho avuto alcuni problemi con questo metodo: alla fine è stato molto lento e l'indicizzazione non è riuscita. Invece, ho usato read_table (), che ha funzionato molto più velocemente e senza il parametro aggiuntivo.
Yurik,

21
Si noti che a partire da 17.0 from_csvè sconsigliato: utilizzare pd.read_csvinvece!
rafaelvalle,

2
Ho dovuto usare quanto segue: DataFrame.read_csv ('filepath.tsv', sep = '', header = 0)
Archie

3
Questa è una cattiva risposta; puoi leggere TSV in modo nativo con pd.read_csv/read_table, devi solo impostare delim_whitespace=Trueosep
smci

3
@rafaelvalle ha aggiunto un avviso obsoleto
Arayan Singh,

84

A partire da 17.0 from_csvè scoraggiato.

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


4
Nota: read_table è obsoleto dalla versione 0.24.0. Utilizzare invece pandas.read_csv ().
ManuelSchneid3r

57

Usa read_table(filepath). Il separatore predefinito è tab


1
read_table non richiede alcun parametro. Perfettamente funzionante.
Jay,

19

Prova questo

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

inserisci qui la descrizione dell'immagine

In realtà è necessario correggere il parametro sep .


7

aprire il file, salvare come .csv e quindi applicare

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

per qualsiasi altro formato, basta cambiare il tag sep


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

È possibile caricare il file tsv direttamente nel frame di dati Panda specificando delimitatore e intestazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.