2025/04/18 3

Pandas 그룹별 단일 값 매핑하기: CaseID별 CATEGORY 유일값 적용

데이터를 다루다 보면, 어떤 그룹(CaseID)별로 특정 컬럼(CATEGORY)이 항상 하나의 고유값을 갖는 경우가 있습니다.예를 들어, 하나의 반품 케이스에 해당하는 CaseID는 항상 하나의 제품군(CATEGORY)으로 구성되어 있는 경우죠.이번 포스팅에서는 Pandas를 이용해 그룹 단위로 CATEGORY가 하나일 경우 그 값을 각 행에 매핑하는 방법을 소개합니다. 예시 상황다음과 같은 이벤트 로그 데이터프레임이 있다고 가정합니다. 목표CaseID 별로 CATEGORY가 유일한 경우→ 그 값을 각 행에 매핑해 새로운 컬럼 CASE_CATEGORY 생성CATEGORY가 2개 이상이면 None 처리 구현 코드import pandas as pd# 예시 데이터프레임df = pd.DataFrame({ ..

Pandas groupby().agg() vs groupby().apply() – 단일 값 매핑할 때 무엇이 더 적절할까?

데이터 전처리 중 종종 다음과 같은 작업이 필요할 때가 있습니다:✅ 그룹별로 특정 컬럼(CATEGORY 등)이 단일한 경우 그 값을 각 행에 매핑하고 싶다. 예를 들어 CaseID별로 CATEGORY가 항상 하나라면,해당 값을 전부 매핑해서 새로운 컬럼으로 붙이고 싶겠죠?이때 Pandas에서는 대표적으로 agg()와 apply() 두 가지 방법을 사용할 수 있습니다.그렇다면, 어떤 걸 써야 할까요? 예제 상황import pandas as pddf = pd.DataFrame({ 'CaseID': [1001, 1001, 1002, 1003, 1003], 'CATEGORY': ['Monitor', 'Monitor', 'TV', 'Laptop', 'Monitor']}) 두 가지 방법 비교agg()..

Pandas에서 apply(set)과 issubset()으로 그룹 조건 필터링하기

데이터 분석을 하다 보면 "특정 그룹에 어떤 값들이 모두 포함되어 있는지"를 조건으로 필터링해야 할 때가 있습니다.예를 들어, CaseID마다 여러 단계의 처리 기록이 있는데, 그 안에 '입고', '이동', '폐기' 같은 모든 단계가 포함된 CaseID만 뽑고 싶을 수 있죠.이럴 때 Pandas에서는 groupby().apply(set)과 set.issubset() 조합이 매우 강력합니다. 예시 상황TXN 이라는 처리 단계 컬럼이 있고, 아래와 같이 CaseID별로 로그가 쌓여 있다고 가정해봅시다. 우리는 4개의 TXN 을 모두 포함한 CaseID만 추출하고 싶습니다:required_txns = { 'SVC Normal RMA Receipt', 'Subinventory Transfer', ..