티스토리 뷰

728x90
반응형

 

CSV파일을 판다스로 읽어왔는데 리스트 또는 딕셔너리가 문자열로 읽힐 때 아주 쉬운 해결방법!

(판다스 뿐만 아니라 DB에 저장되어있는 등 ... 모든 문자열에 해당)

 

제가 읽어온 데이터에는 geojson 좌표데이터가 들어있어요.

대부분의 좌표데이터는 딕셔너리 내에 여러 리스트들로 만들어져있는데, 문자열로 저장되어보입니다

 

 

0번째 인덱스의 데이터를 출력해보니 데이터타입이 문자열이네요.

 

 

문자열이 아닌 데이터를 정상적으로 불러오는 아주 쉬운 방법!!

literal_eval 라이브러리를 사용하는 것입니다

아래는 사용예시입니다

from ast import literal_eval

literal_eval('[1.23, 2.34]')
# 위 코드가 에러나면 eval('[1.23, 2.34]')로도 시도해보세요

 

literal_eval을 통해 0번째 인덱스의 딕셔너리 데이터를 정상적으로 변환해왔습니다!

 

이제 CSV 모든 행에 대해서 literal_eval을 적용해봅니다.

for문으로 하나하나씩 돌리면 넘 오래걸리므로 pandas의 apply, lambda를 활용합니다

geometry_trans라는 새로운 컬럼을 만들어 geometry 모든 데이터에 literal_eval을 적용시켜놓겠다는 뜻입니다

file['geometry_trans'] = file.apply(lambda x: literal_eval(x.geometry) , axis = 1)

 

잘 적용되었는지 확인해봅니다~! 

끝!

728x90
반응형
댓글