2017-02-13 1 views
1

,은 필드를 구분하는 데 사용되는 구분 기호이지만 소수점을 나타내는 기호 (독일어 표기)를 나타내는 기호로 추가되는 CSV 파일을 받았습니다.팬더가 형식이 잘못됨 CSV

결과적으로 일부 행의 열 수는 달라집니다. 이상하게도 탁월한 파일을 파싱/읽습니다. 판다에서도 그러한 파일을 읽을 수 있습니까? 내가로드

first, number, third 
some, 1, other 
foo, 1.5, bar 
baz, 1,5, some 

의 내용에 ~/Downloads/foo.csv 파일을

pd.read_csv(os.path.expanduser('~/Downloads/foo.csv'), sep=',', decimal=',') 

: 지금까지 난 단지

Error tokenizing data. C error: Expected 97 fields in line 3, saw 98 

편집 여기

는 최소한의 예입니다 비슷한 뭔가있어 R의 데이터는

See spec(...) for full column specifications. 
Warnung: 1538 parsing failures. 
row col expected  actual 
    1 -- 93 columns 97 columns 
    2 -- 93 columns 98 columns 
    3 -- 93 columns 97 columns 
    4 -- 93 columns 102 columns 
    5 -- 93 columns 99 columns 

팬더에는 이와 같은 허용 모드가 있습니까?

+3

재현 가능한 샘플 데이터 세트를 게시 할 수 있습니까? – MaxU

+0

완료. 편집을 참조하십시오. –

+0

행당 잠재적으로 영향을받는 열은 하나 뿐이므로 정확한 데이터 표현입니까? – DSM

답변

2

파일에 read_csv로 선언해야하는 따옴표 구분 기호가 없는지 확인하십시오.

파일이 잘못 작성된 경우 쉼표가있는 일련의 문자가 두 개의 필드이거나 쉼표로 구분 된 번호가있는 문자 하나만 결정할 수있는 것보다 수학적으로 결정적인 알고리즘이 없습니다.

파일의 현실에 접근하는 임시 알고리즘을 사용하여 비정형 데이터를 정리하는 전 처리기를 작성해야합니다. 과 같이 심술 궂을 수 있습니다. 쉼표 뒤에 3 자리 숫자가 오는 가정용 숫자는 실제로 동일한 필드 및 기타 수정본을 사용합니다.

심지어 결정적이지 않은 경우에도 대처할 수 있습니다. 그런 다음 데이터 소스로 이동하여 데이터 수정을위한 다른 파일 형식을 요청할 수 있습니다.

error_bad_lines을 :

잘못된 라인을 삭제하고 다른 사람을로드하려면 문서에서 이러한 매개 변수가 도움이 될 것입니다, 부울 너무 많은 분야 (트루 라인을 기본 예를 들어 너무 많은 쉼표와 CSV 라인) 기본적으로 예외가 발생하고 DataFrame이 반환되지 않습니다. False이면 이 "잘못된 선"은 이 반환 된 DataFrame에서 삭제됩니다.

warn_bad_lines (C 파서 만 유효) : 부울 기본 error_bad_lines은 거짓이며, warn_bad_lines이 True True 인 경우, 각 "나쁜 라인"에 대한 경고가 출력됩니다. (C 파서에서만 유효 함).

+0

불행히도 이것은 대답처럼 들립니다. –

+1

@GeorgHeiler는 그 분야에서 저의 겸손한 경험을 믿습니다. 그렇지만 마음이 약간의 시간 만 받아들이지 않을 것입니다 :-). 더 많이 생각하면, 일반적으로이를 해결하는 것이 정지 문제를 위반하는 것과 일치한다는 것을 알 수 있습니다. – Boud

+0

내가 마지막으로 수정 한 내용을 보려면 R에 유사한 허용 모드를 추가로 요청하면 경고 메시지가 표시되지만 데이터의 일부만로드 할 수 있습니까? –