2014-09-29 34 views
7

Tôi có một tập tin CSV lấy từ một bãi chứa SQL mà trông giống như dưới đây (lần đầu tiên vài dòng sử dụng file.csv đầu từ thiết bị đầu cuối):Nhập tệp CSV trong gấu trúc thành một dataframe gấu trúc

??AANAT,AANAT1576,4 
AANAT,AANAT1704,1 
AAP,AAP-D-12-00691,8 
AAP,AAP-D-12-00834,3 

Khi tôi sử dụng lệnh pd.read_csv ('file.csv') Tôi nhận được lỗi "ValueError: Không có cột nào để phân tích cú pháp từ tệp".

Bất kỳ ý tưởng nào về cách nhập tệp CSV vào bảng và tránh lỗi?

LẬP CÂU HỎI (sau bình luận của Ed)

Tôi đã thử header = None, skiprows = 1 để tránh ?? (xuất hiện khi sử dụng lệnh head từ terminal).

Đường dẫn tập tin để chiết là http://goo.gl/jyYlIK

+1

Là những '??' thực sự trong các tập tin văn bản? khi tôi nhập dữ liệu mà nó nhập mà không có lỗi, bạn có thể thử 'pd.read_csv ('file.csv', header = None)' – EdChum

+0

Cảm ơn Ed đã xây dựng câu hỏi - có thể là mã hóa vui nhưng không chắc cách xử lý trong trường hợp đó – user7289

+0

Cho dù '??' nên có hay không nó vẫn nên nhập khẩu trừ khi những '??' là một số ký tự điều khiển lạ. Bạn có thể đăng liên kết đến tệp csv thô không, tại thời điểm này nếu tôi sao chép và dán dữ liệu của mình, tôi có thể xác nhận kết thúc của bạn để có thể có lỗi xảy ra với tệp csv – EdChum

Trả lời

11

Vì vậy, các ?? ký tự mà bạn nhìn thấy trong thực tế, các ký tự không thể in được mà sau khi xem xét hồ sơ csv liệu của bạn sử dụng một trình soạn thảo hex cho thấy họ đang có trong thực tế utf-16 little endian\FFEE mà là Byte-Order-Mark.

Vì vậy, tất cả các bạn cần làm là để chuyển thông tin này như các loại mã hóa và nó đọc trong mỹ:

In [46]: 

df = pd.read_csv('otherfile.csv', encoding='utf-16', header=None) 
df 
Out[46]: 
     0    1 2 
0 AANAT  AANAT1576 4 
1 AANAT  AANAT1704 1 
2 AAP AAP-D-12-00691 8 
3 AAP AAP-D-12-00834 3 
4 AAP AAP-D-13-00215 10 
5 AAP AAP-D-13-00270 7 
6 AAP AAP-D-13-00435 5 
7 AAP AAP-D-13-00498 4 
8 AAP AAP-D-13-00530 0 
9 AAP AAP-D-13-00747 3 
+0

tôi đã thực hiện những gì bạn đã gợi ý nhưng sau đó tôi cũng nhận được cùng một lỗi. –

+0

Xin lỗi, tôi không thể nhận xét trừ khi bạn cung cấp dữ liệu thực, bạn có thể thử chuyển các mã hóa khác nhau 'utf-8', điều quan trọng là xem xét một vài byte đầu tiên và xem nó có khớp với [dấu thứ tự byte] đã biết hay không (https://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding) – EdChum

Các vấn đề liên quan