Próbuję odczytywać segmenty pliku CSV do pandy DataFrame, i wpadam w kłopoty, kiedy ustawiam nrows na więcej niż jeden punkt. Mój plik CSV jest podzielony na różne segmenty z różnymi nagłówkami/typami danych, więc przeszedłem przez ten plik i znalazłem numery linii różnych segmentów oraz zapisałem numery linii. Kiedy próbuję zrobić:Czytanie części ~ 13000 wiersza pliku CSV z pandami read_csv i Nrows
pd.io.parsers.read_csv('filename',skiprows=40, nrows=12646)
Działa dobrze. Jakiekolwiek dalsze rzędy, i zgłasza błąd:
CParserError: Error tokenizing data. C error: Expected 56 fields in line 13897, saw 71
To prawda, że linia 13897 ma, że wiele wierszy, dlatego staram się używać nRows i skiprows. Mogę znaleźć ostatni rząd, który pandy przeczytają i nie będzie wyglądać inaczej niż reszta. Patrząc na plik w edytorze szesnastkowym wciąż nie widzę żadnej różnicy.
Ja również próbowałem go innym pliku CSV i uzyskać podobne wyniki:
pd.io.parsers.read_csv('file2',skiprows=112, nrows=18524)
<class 'pandas.core.frame.DataFrame'>
Int64Index: 18188 entries, 0 to 18187
Ale:
pd.io.parsers.read_csv('file2',skiprows=112, nrows=18525)
otrzymujemy:
CParserError: Error tokenizing data. C error: Expected 56 fields in line 19190, saw 71
Czy jest coś "brakuje? Czy jest inny sposób na zrobienie tego?
Używam: pandas-0.10.1.win-amd64-py3.3
, numpy-MKL-1.7.1rc1.win-amd64-py3.3
i python-3.3.0.amd64
w systemie Windows. Mam ten sam problem z numpy-unoptimized-1.7.1rc1.win-amd64-py3.3
.
jest coś podejrzanego z tej linii z nią tak jak to ma 70 przecinki gdzie każda poprzednia linia ma 55 ...? –
Linia, do której odnosi się błąd, to jedna z 70 przecinkami, tak. Ale z skiprowami i nrowami staram się uniemożliwić mu dotarcie do tej linii. Na przykład, gdy błąd odnosi się do linii 13897, próbuję odczytać z linii od 40 do 12647 + 40. Wiersze, które próbuję określić, są normalne (55 pól). – dooz