Bagaimana cara memuat file tsv ke dalam Pandaf DataFrame?

136

Saya baru mengenal python dan panda. Saya mencoba untuk mendapatkan tsvfile yang dimuat ke dalam panda DataFrame.

Inilah yang saya coba dan kesalahan yang saya dapatkan:

>>> 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
sumber
11
Bagi yang datang ke jawaban ini di 2017+, gunakan read_csv('path_to_file', sep='\t'). Lihat jawaban ini di bawah
Ted Petrou
Terima kasih @TedPetrou
Salomon Kabongo

Jawaban:

153

Catatan : Pada 17.0 from_csvtidak disarankan: gunakanpd.read_csv saja

Dokumentasi mencantumkan fungsi .from_csv yang muncul untuk melakukan apa yang Anda inginkan:

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

Jika Anda memiliki tajuk, Anda dapat meneruskan header=0.

DataFrame.from_csv('c:/~/trainSetRel3.txt', sep='\t', header=0)
huon
sumber
4
Saya punya beberapa masalah dengan metode ini - itu sangat lambat dan gagal pengindeksan pada akhirnya. Sebagai gantinya, saya menggunakan read_table (), yang bekerja lebih cepat dan tanpa param tambahan.
Yurik
21
Perhatikan bahwa pada 17.0 from_csvtidak disarankan: gunakan pd.read_csvsaja!
rafaelvalle
2
Saya harus menggunakan yang berikut ini: DataFrame.read_csv ('filepath.tsv', sep = '', header = 0)
Archie
3
Ini jawaban yang buruk; Anda dapat membaca TSV secara asli dengan pd.read_csv/read_table, Anda hanya perlu mengatur delim_whitespace=Trueatausep
smci
3
@rafaelvalle menambahkan pemberitahuan yang ditinggalkan
Arayan Singh
84

Pada 17.0 from_csvtidak disarankan.

Gunakan pd.read_csv(fpath, sep='\t')atau pd.read_table(fpath).

Kamil Sindi
sumber
4
Catatan: read_table sudah tidak digunakan lagi sejak versi 0.24.0. Gunakan pandas.read_csv () sebagai gantinya.
ManuelSchneid3r
57

Gunakan read_table(filepath). Pemisah default adalah tab

Wes McKinney
sumber
1
read_table tidak memerlukan parameter apa pun. Bekerja dengan sempurna.
Jay
19

Coba ini

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

masukkan deskripsi gambar di sini

Anda sebenarnya perlu memperbaiki parameter sep .

Mohsin Ashraf
sumber
7

buka file, simpan sebagai .csv dan kemudian terapkan

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

untuk format lain juga, cukup ganti tag sep

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

Anda dapat memuat file tsv langsung ke bingkai data panda dengan menentukan pembatas dan header.

Jackson
sumber