부트캠프 프로젝트
- 구독 서비스 플랫폼 데이터 분석 프로젝트
# 버튼 컬럼 하나로 병합
df['b_name'] = df.apply(
lambda row: row['a.name'] if pd.notnull(row['a.name']) else (
row['a_name'] if pd.notnull(row['a_name']) else '없음'), axis=1)
df
[ 문제 상황 ]
- 데이터프레임에 a.name과 a_name 두 개의 컬럼이 있다.
- 각 행에서 a.name과 a_name 중 하나 또는 둘 다 null일 수 있다.
- 두 컬럼의 값은 상호 배타적으로 존재하거나 모두 null일 수 있으며, 이를 기반으로 새로운 컬럼 b_name을 생성해야 한다.
[ 논리 과정 ]
- 새로운 컬럼을 생성한다.
- 새로운 컬럼에 두 컬럼의 값 중 값이 존재하는 컬럼값을 삽입한다.
- 둘다 null일 경우 '없음'으로 표기한다.
[ 해결 ]
apply()
함수를 사용하여 새로운 컬럼(시리즈타입)에 두 컬럼을 비교하여 컬럼값이 존재하는 컬럼의 데이터를 삽입하는 함수를 적용시킨다.- 두 컬럼을 비교하여 컬럼값이 존재하는 컬럼의 데이터를 삽입하는 함수는
lambda
를 사용하여 임시 함수를 정의한다. - 각 컬럼이 null인지 파악하기 위해서 pandas라이브러리의
notnull()
메서드를 사용한다.
[ 회고 ]
apply()
메서드와lambda
를 활용하여 데이터 프레임에서 컬럼 단위로 데이터를 손쉽게 가공할 수 있다.- 값이 결측값이 아닌 경우 True를 반환시키는
pd.notnull()
를 활용하여 null값 여부를 판단하는 조건을 생성할 수 있다.
'DA Study > TIL' 카테고리의 다른 글
[TIL] 특정 값으로 편향된 데이터 전처리하기 # python # 부트캠프 (1) | 2025.01.14 |
---|---|
[TIL] 로지스틱 회귀분석에서 오즈비 계산하기 # python # 부트캠프 (0) | 2025.01.13 |
[TIL] Window함수로 Median 구하기 # MySQL # SQL (1) | 2025.01.06 |
[TIL] 감정 분석 - 토큰별 Polarity 값 추가하기 #python3 #FC온라인 (0) | 2025.01.04 |
[TIL] 조건 비교를 위한 IN / EXISTS 구문 활용(서브쿼리) # MySQL # SQL (2) | 2025.01.03 |