티스토리 뷰
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
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[오류해결] key 'keyname' must not contain '.' 오류 (0) | 2022.06.17 |
---|---|
[워드클라우드] 파이썬으로 워드클라우드 만들기 아주쉬워요 (0) | 2022.06.09 |
[pymongo] pandas csv파일을 mongoDB에 한꺼번에 insert하는 방법 (0) | 2022.05.25 |
[django] 장고 accounts/login 로그인/로그아웃 로그 저장하기 (0) | 2022.04.21 |
[django] django templatetag date 날짜형식 맞춰넣기 (0) | 2022.04.19 |
댓글