imhamburger 님의 블로그
PostgreSQL의 JSON 타입 컬럼을 Pandas로 읽을 때 본문
이번 프로젝트는 지난번에 배포한 매칭 시스템을 더 고도화하기 위한 작업을 진행하였다.
그 과정에서 이번에 이력서 점수 계산 요소에 완성도를 포함하여 점수에 반영하는 걸로 하였는데 문제가 발생했다.
문제
getAvgResumeScore 함수에서 이력서 완성도(Resume completeness)를 판정할 때 isnull() 혹 fillna() 가 먹지 않아 조건문 if not v: 가 잘못 동작했다. 데이터가 NULL이어야 할 필드가 {} (빈 JSON/object) 로 들어와서 빈값을 NA로 처리하지 못했고, 그 결과 로직이 오작동했다.
원인
- 데이터가 원래 NULL 또는 None 값을 포함하고 있었지만, JSON 변환 과정에서 null이 {}(빈 Object) 로 잘못 변환됨.
- 특히, MongoDB나 PostgreSQL의 JSON 타입 컬럼을 Pandas로 읽을 때 NULL 값이 JSON 파서에 의해 {} 로 인식되는 경우가 있다고 함.
- 현재 DB는 PostgreSQL 사용중
해결방법
기존코드
if pd.notnull(value) and value != '':
score += weight
수정코드
def has_value(v):
if not v or v == [] or v == '{}' or v == '{' or v == '[]':
return False
return True
if has_value(value):
score += weight
결과

Average resume score 가 1.0이 아닌 0.52로 정상적으로 출력되었다.
값이 비어있어서 null으로 변환될 줄 알았는데 MongoDB나 PostgreSQL의 JSON 타입 컬럼을 Pandas로 읽을 때는 주의하자!
'판다스(Pandas)' 카테고리의 다른 글
| Pandas join으로 데이터에 이미 존재하는 ID가 있으면 append 하기 (0) | 2025.11.16 |
|---|---|
| 데이터엔지니어 부트캠프 - 영화 박스오피스 데이터 ETL(Extraction / Transform / Load) (7월의 기록) (1) | 2024.08.04 |
| 판다스(Pandas) - Partition_cols 이해하기 (0) | 2024.07.27 |
| 판다스(Pandas) - csv파일 불러오기, unicode 에러 해결하기 (0) | 2024.07.25 |