2017-12-19 2 views
1

커다란 csv 파일을 읽고 싶습니다. 팬더의 이터레이터 chunksize을 사용합니다. 그러나 나는 ParserError을 얻었으므로 try를 사용하여 예외를 생각하고 다음 오류가 발생하면 다음 청크 반복을 전달하려고합니다.chunkksize 이터레이터를 제외하고 시도하십시오

NameError : name "ParserError" is not defined :이 오류를 얻을

df = pd.read_csv("file.csv",iterator=True) 
d=True 
while d==True : 
    try: 
     df.get_chunk(500000) 
    exept ParserError : 
     pass 
    except StopIteration: 
     d=False 

그러나 : 그래서 나는 것을 테스트했다.

도움 주셔서 감사합니다.

+1

아마도'pd.errors.ParserError'를 의미했을 것입니다. –

+1

당신은'except' 대신에'exept'를 worte합니다. – rocksteady

+0

질문에 대한 답변이 있으면 옆에있는 회색 체크를 클릭하고 녹색으로 전환하여 [가장 유용한 답변 수락] (https://stackoverflow.com/help/someone-answers)을주십시오. 감사! –

답변

5

팬더의 최신 버전에서는 read_csv이 반복 중에 전달할 수있는 chunksize 인수를 허용합니다. 그것은 어느 for 핸들 및 종료 소진되면 pd.read_csv 자동으로 StopIteration을 제기하기 때문에

for chunk in pd.read_csv("file.csv", 
         chunksize=500000, 
         iterator=True, 
         error_bad_lines=False, 
         engine='python'): 
    ... # do something with `chunk` 

는, 거기에 while 루프가 필요 없다, 또는 오류 처리합니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 귀하의 방법을 시도 할 때 오류가 발생합니다 : 데이터 토큰 오류입니다. C 오류 : 버퍼 오버 플로우가 잡혔습니다 - 기형의 입력 파일이 있습니다. – day

+1

@day 또 다른 속성 인'engine = 'python''이 추가되었습니다. 다시 시도하십시오. –

관련 문제