pd.read_csv 오류 pandas.errors.ParserError: Too many columns specified

2022. 3. 3. 11:31

잘 돌아가던 코드가 저번 주에 센서 쪽에서 오류났던 이후로 안 돌아감 ㄱ=

무슨 짓을 한 거예요?

 

여기서 오류가 났댄다

pandas.errors.ParserError: Too many columns specified

 

일단 원래 코드로 시키고 싶었던 건

"이 csv파일을 읽어와서 쉼표로 구분하고 각 열에 이름을 붙여서 데이터프레임으로 만들렴."

정도 된다.

그리고 이번에 난 오류 뜻은 "님이 지정한 열이 너무 많아요."

 

일단 csv 파일을 살펴봤는데 ','로 구분된 csv파일이 맞다.

2203031112,10,10,10,13,50
2203031113,10,12,14,14,50
2203031114,10,14,15,14,50

예전이랑 똑같은 형식의 데이터다.

 

근데 왜 안 읽히는 거야! 하고 csv파일을 엑셀로 열어보니 한 줄이 한 칸에 전부 들어있음.

쉼표가 있는 한데 csv가 실제로 구분이 안 되고 있으니 지정한 열 개수와 맞질 않고 한 열에 욱여넣어진 거였다.

아니 여태까지는 잘 들어오다가 왜 이러는데ㅡㅡ 너무 짜증나서 일본리젠트양아치남처럼 육성으로 아앙~? 소리를 낼 뻔 했다.

 

약 2시간의 구글링을 거쳐...

df = pd.read_csv(file,sep=r"\,+",names=['time','x','y','z','temp','humi'],on_bad_lines='warn', encoding='utf-8',engine='python')

코드를 이렇게 수정해봤다.

 

  • sep=r"\,+"

매개변수인 sep에 지정했던 ","을 정규 표현식으로 바꿨다. (사실 잘 모름)

대충 이스케이프문자로 ,를 확실히 지정하고 ,가 반복되어서 나올때마다 구분하는 것 같음...?

 

  • engine='python'

그리고 엔진 종류가 c도 있고 python도 있다길래 끝에 이것도 추가해줬다.

 

이랬더니 작동은 되고 있다...!

...오류 없이 제대로 되고 있는 건지는 모르겠지만ㄱ=

Created by BANANA