[Pandas] explode() (리스트가 들어있는 셀 행마다 분해)

2025. 4. 24. 12:51·python/Pandas | Numpy
728x90

데이터를 다루다 보면 한 셀에 리스트나 튜플 형태로 여러 값이 들어 있는 경우가 많다.

예를 들어:

  • 상품 태그: ['전자제품', '스마트폰']
  • 사용자가 선택한 옵션 목록: ['블랙', '128GB']
  • JSON 데이터를 Pandas로 파싱했더니 list가 그대로 들어옴

이런 경우, 분석을 하려면 반드시 각 항목을 행 단위로 분해해야 한다.
explode()는 바로 이런 상황을 위해 탄생한 함수다.

 

예제 데이터

import pandas as pd

df = pd.DataFrame({
    'user_id': [101, 102, 103],
    'tags': [['A', 'B'], ['C'], []]
})


기본 문법

df.explode(column, ignore_index=False)

 

  • column: 리스트가 들어있는 컬럼
  • ignore_index: True일 경우 인덱스를 재정렬

1. 예제: 기본 explode() 사용

df.explode('tags')

 

 

  • 리스트 항목이 각각 행으로 펼쳐짐
  • 빈 리스트는 NaN으로 처리됨
  • 기존 인덱스가 유지됨

 

2. 예제: 인덱스 재정렬 (ignore_index=True)

df.explode('tags', ignore_index=True)

 

→ 결과 인덱스를 새로 부여하고 싶을 때 사용

 

 

3. 예제: 여러 컬럼 조합에서 explode

df = pd.DataFrame({
    'user_id': [201, 202],
    'tags': [['A', 'B'], ['C']],
    'scores': [[100, 90], [85]]
})
df.explode(['tags', 'scores'])

→ 각 리스트 길이가 같아야 정상 작동! 다르면 ValueError 발생

 

 

4. 예제: JSON 파싱 후 explode

df = pd.DataFrame({
    'user_id': [301, 302],
    'likes': [['python', 'pandas'], ['numpy']]
})
df.explode('likes')

→ 크롤링/로그/REST API 결과 등 리스트 형태 데이터 정제에 매우 유용


주의사항

이슈 설명
리스트가 아닌 값이 섞여 있으면? explode()는 리스트/튜플/Series 타입만 작동
여러 컬럼 동시에 explode 시? 각 열의 리스트 길이가 모두 같아야 함
원본 인덱스 보존 vs 재정렬 ignore_index=True 설정 필요 여부 판단
빈 리스트는 NaN 처리됨 → 후처리 시 dropna() 고려 필요

후처리 예제

exploded_df = df.explode('tags').dropna(subset=['tags']).reset_index(drop=True)

→ 리스트 분해 후 빈 값 제거 + 인덱스 초기화까지 한 번에

 

 

 

explode()는 셀 내부의 리스트를 개별 행으로 변환해주는 강력한 도구다.
태그 분석, 다중 선택 옵션 분석, API JSON 데이터 정리 등 현업에서 매우 자주 등장하는 형태를 깔끔하게 펼쳐주는 핵심 함수다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'python > Pandas | Numpy' 카테고리의 다른 글

[Pandas] applymap() - DataFrame 전체 셀에 함수를 적용  (0) 2025.04.29
[Pandas] map() (조건 라벨링, 값 변환, 딕셔너리 매핑까지 Series 변환의 핵심)  (0) 2025.04.24
[Pandas] eval() (열 간 수식을 짧고 빠르게 처리)  (0) 2025.04.24
[Pandas] query() (loc보다 더 깔끔하게 조건 필터링)  (0) 2025.04.24
[Pandas] filter()  (0) 2025.04.24
'python/Pandas | Numpy' 카테고리의 다른 글
  • [Pandas] applymap() - DataFrame 전체 셀에 함수를 적용
  • [Pandas] map() (조건 라벨링, 값 변환, 딕셔너리 매핑까지 Series 변환의 핵심)
  • [Pandas] eval() (열 간 수식을 짧고 빠르게 처리)
  • [Pandas] query() (loc보다 더 깔끔하게 조건 필터링)
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (146)
      • python (45)
        • selenium (4)
        • algorithm (9)
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (29)
      • Data Scientist (3)
      • Data Analysis (9)
      • Computer Science (35)
      • Why? (15)
      • 마음가짐 (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
[Pandas] explode() (리스트가 들어있는 셀 행마다 분해)
상단으로

티스토리툴바