Wie lade ich eine tsv-Datei in einen Pandas DataFrame?

135

Ich bin neu in Python und Pandas. Ich versuche, eine tsvDatei in einen Pandas zu laden DataFrame.

Dies ist, was ich versuche und der Fehler, den ich bekomme:

>>> 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!
screechOwl
quelle
11
Für diejenigen, die 2017+ zu dieser Antwort kommen, verwenden Sie read_csv('path_to_file', sep='\t'). Siehe diese Antwort unten
Ted Petrou
Vielen Dank @ TedPetrou
Salomon Kabongo

Antworten:

153

Hinweis : Ab 17.0 from_csvwird davon abgeraten: Verwenden Sie pd.read_csvstattdessen

In der Dokumentation ist eine .from_csv- Funktion aufgeführt, die anscheinend das tut, was Sie wollen:

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

Wenn Sie einen Header haben, können Sie übergeben header=0.

DataFrame.from_csv('c:/~/trainSetRel3.txt', sep='\t', header=0)
huon
quelle
4
Ich hatte einige Probleme mit dieser Methode - sie war sehr langsam und schlug am Ende fehl. Stattdessen habe ich read_table () verwendet, was viel schneller und ohne den zusätzlichen Parameter funktioniert hat.
Yurik
21
Beachten Sie, dass ab 17.0 from_csvdavon abgeraten wird: Verwenden Sie pd.read_csvstattdessen!
Rafaelvalle
2
Ich musste Folgendes verwenden: DataFrame.read_csv ('filepath.tsv', sep = '', header = 0)
Archie
3
Das ist eine schlechte Antwort; Sie können TSV nativ mit lesen pd.read_csv/read_table, Sie müssen nur delim_whitespace=Trueodersep
smci
3
@rafaelvalle hinzugefügt veraltete Mitteilung
Arayan Singh
83

Ab 17.0 from_csvwird davon abgeraten.

Verwenden Sie pd.read_csv(fpath, sep='\t')oder pd.read_table(fpath).

Kamil Sindi
quelle
4
Hinweis: read_table ist seit Version 0.24.0 veraltet. Verwenden Sie stattdessen pandas.read_csv ().
ManuelSchneid3r
57

Verwenden Sie read_table(filepath). Das Standardtrennzeichen ist tab

Wes McKinney
quelle
1
read_table benötigt keine Parameter. Perfekt funktioniert.
Jay
19

Versuche dies

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

Geben Sie hier die Bildbeschreibung ein

Sie müssen tatsächlich den sep- Parameter korrigieren .

Mohsin Ashraf
quelle
7

Datei öffnen, als CSV speichern und dann anwenden

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

Ändern Sie für jedes andere Format einfach das sep-Tag

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

Sie können die tsv-Datei direkt in den Pandas-Datenrahmen laden, indem Sie Trennzeichen und Header angeben.

Jackson
quelle