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!

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)

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).


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


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 .


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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.