Làm cách nào để tải tệp tsv vào DataFrame Pandas?


136

Tôi mới biết đến trăn và gấu trúc. Tôi đang cố gắng để có được một tsvtập tin được tải vào một con gấu trúc DataFrame.

Đây là những gì tôi đang cố gắng và lỗi tôi nhận được:

>>> 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
Đối với những người đến với câu trả lời này trong năm 2017+, hãy sử dụng read_csv('path_to_file', sep='\t'). Xem câu trả lời dưới đây
Ted Petrou

Cảm ơn @TedPetrou
Salomon Kabongo

Câu trả lời:


153

Lưu ý : Kể từ ngày 17.0 from_csvkhông được khuyến khích: sử dụng pd.read_csvthay thế

Tài liệu liệt kê một hàm .from_csv xuất hiện để làm những gì bạn muốn:

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

Nếu bạn có một tiêu đề, bạn có thể vượt qua header=0.

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

4
Tôi đã có một số vấn đề với phương pháp này - nó rất chậm và lập chỉ mục thất bại vào cuối. Thay vào đó, tôi đã sử dụng read_table (), hoạt động nhanh hơn nhiều và không có thông số phụ.
Yurik

21
Lưu ý rằng vào ngày 17.0 from_csvkhông được khuyến khích: pd.read_csvthay vào đó hãy sử dụng !
rafaelvalle

2
Tôi đã phải sử dụng như sau: DataFrame.read_csv ('filepath.tsv', sep = '', tiêu đề = 0)
Archie

3
Đây là một câu trả lời tồi; bạn có thể đọc TSV nguyên bản với pd.read_csv/read_table, bạn chỉ cần đặt delim_whitespace=Truehoặcsep
smci

3
@rafaelvalle thêm thông báo không dùng nữa
Arayan Singh

84

Kể từ ngày 17.0 from_csvkhông được khuyến khích.

Sử dụng pd.read_csv(fpath, sep='\t')hoặc pd.read_table(fpath).


4
Lưu ý: read_table không được dùng kể từ phiên bản 0.24.0. Sử dụng pandas.read_csv () để thay thế.
ManuelSchneid3r

57

Sử dụng read_table(filepath). Dấu phân cách mặc định là tab


1
read_table không yêu cầu bất kỳ tham số. Hoàn hảo làm việc.
Jay

19

Thử cái này

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

nhập mô tả hình ảnh ở đây

Bạn thực sự cần phải sửa tham số sep .


7

mở tệp, lưu dưới dạng .csv và sau đó áp dụng

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

đối với bất kỳ định dạng nào khác, chỉ cần thay đổi thẻ sep


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

Bạn có thể tải tệp tsv trực tiếp vào khung dữ liệu gấu trúc bằng cách chỉ định dấu phân cách và tiêu đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.