Tôi đang cố gắng đọc các phân đoạn của tệp CSV thành DataFrame gấu trúc và tôi gặp sự cố khi tôi đặt nrows thành nhiều hơn một điểm nhất định. Tệp CSV của tôi được chia thành các phân đoạn khác nhau với các tiêu đề/loại dữ liệu khác nhau, vì vậy tôi đã xem qua tệp và tìm thấy số dòng của các phân đoạn khác nhau và lưu số dòng. Khi tôi cố gắng làm:Đọc các phần của ~ 13000 tệp CSV hàng với gấu trúc read_csv và nrows
pd.io.parsers.read_csv('filename',skiprows=40, nrows=12646)
Nó hoạt động tốt. Bất kỳ hàng nào khác, và nó ném một lỗi:
CParserError: Error tokenizing data. C error: Expected 56 fields in line 13897, saw 71
Đúng là dòng 13897 có nhiều hàng, đó là lý do tại sao tôi đang cố gắng sử dụng nrows và skiprows. Tôi có thể tìm thấy hàng cuối cùng mà gấu trúc sẽ đọc và nó trông không khác gì so với phần còn lại. Nhìn vào các tập tin trong một trình soạn thảo hex tôi vẫn không thấy bất kỳ sự khác biệt.
Tôi cũng đã thử nó với tập tin CSV khác, và tôi nhận được kết quả tương tự:
pd.io.parsers.read_csv('file2',skiprows=112, nrows=18524)
<class 'pandas.core.frame.DataFrame'>
Int64Index: 18188 entries, 0 to 18187
Nhưng:
pd.io.parsers.read_csv('file2',skiprows=112, nrows=18525)
cho:
CParserError: Error tokenizing data. C error: Expected 56 fields in line 19190, saw 71
Có cái gì tôi 'M mất tích? Có một cách khác để làm điều này?
Tôi đang sử dụng: pandas-0.10.1.win-amd64-py3.3
, numpy-MKL-1.7.1rc1.win-amd64-py3.3
và python-3.3.0.amd64
trên Windows. Tôi gặp vấn đề tương tự với numpy-unoptimized-1.7.1rc1.win-amd64-py3.3
.
Có một cái gì đó tanh với dòng này với nó như nó có 70 dấu phẩy, nơi mọi dòng trước đó có 55 ...? –
Dòng lỗi được đề cập đến là một dòng với 70 dấu phẩy, có. Nhưng với những tiếng lách cách và nrows, tôi đang cố gắng ngăn nó đi tới vạch đó. Ví dụ: khi lỗi đề cập đến dòng 13897, tôi đang cố đọc từ dòng 40 đến 12647 + 40. Các hàng tôi đang cố gắng chỉ định là bình thường (55 trường). – dooz