Jak załadować plik tsv do ramki danych Pandas?

142

Jestem nowy w Pythonie i Pandach. Próbuję tsvzaładować plik do pandy DataFrame.

Oto, co próbuję, i otrzymuję błąd:

>>> 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
źródło
12
Dla tych, którzy przychodzą do tej odpowiedzi w 2017+, użyj read_csv('path_to_file', sep='\t'). Zobacz odpowiedź poniżej
Ted Petrou,
Dzięki @TedPetrou
Salomon Kabongo

Odpowiedzi:

157

Uwaga : od wersji 17.0 from_csvodradza się: pd.read_csvzamiast tego używaj

Dokumentacja zawiera funkcję .from_csv, która wydaje się robić to, co chcesz:

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

Jeśli masz nagłówek, możesz przejść header=0.

DataFrame.from_csv('c:/~/trainSetRel3.txt', sep='\t', header=0)
huon
źródło
4
Miałem pewne problemy z tą metodą - było bardzo powolne i na końcu nie udało się indeksować. Zamiast tego użyłem read_table (), który działał znacznie szybciej i bez dodatkowego parametru.
Yurik
22
Zauważ, że od wersji 17.0 from_csvodradza się: użyj pd.read_csvzamiast tego!
rafaelvalle
2
Musiałem użyć następującego: DataFrame.read_csv ('filepath.tsv', sep = '', header = 0)
Archie
3
To zła odpowiedź; możesz czytać TSV natywnie pd.read_csv/read_table, po prostu musisz ustawić delim_whitespace=Truelubsep
smci
3
@rafaelvalle dodał przestarzałe powiadomienie
Arayan Singh
86

Od 17.0 from_csvjest odradzane.

Użyj pd.read_csv(fpath, sep='\t')lub pd.read_table(fpath).

Kamil Sindi
źródło
4
Uwaga: read_table jest przestarzałe od wersji 0.24.0. Zamiast tego użyj pandas.read_csv ().
ManuelSchneid3r
57

Użyj read_table(filepath). Domyślnym separatorem jest tabulator

Wes McKinney
źródło
1
read_table nie wymaga żadnych parametrów. Doskonale działa.
Jay
20

Spróbuj tego

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

wprowadź opis obrazu tutaj

W rzeczywistości musisz naprawić parametr sep .

Mohsin Ashraf
źródło
8

otwórz plik, zapisz jako .csv, a następnie zastosuj

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

dla każdego innego formatu, po prostu zmień oddzielny znacznik

ankit srivastava
źródło
0
df = pd.read_csv('filename.csv', sep='\t', header=0)

Możesz załadować plik tsv bezpośrednio do ramki danych pandy, określając separator i nagłówek.

Jackson
źródło