DA Study/TIL

[TIL] apply()와 lambda 함수의 활용 # python # 부트캠프

harrym8n 2025. 1. 11. 18:21

부트캠프 프로젝트 - 구독 서비스 플랫폼 데이터 분석 프로젝트

# 버튼 컬럼 하나로 병합
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을 생성해야 한다.

[ 논리 과정 ]

  1. 새로운 컬럼을 생성한다.
  2. 새로운 컬럼에 두 컬럼의 값 중 값이 존재하는 컬럼값을 삽입한다.
  3. 둘다 null일 경우 '없음'으로 표기한다.

[ 해결 ]

  • apply()함수를 사용하여 새로운 컬럼(시리즈타입)에 두 컬럼을 비교하여 컬럼값이 존재하는 컬럼의 데이터를 삽입하는 함수를 적용시킨다.
  • 두 컬럼을 비교하여 컬럼값이 존재하는 컬럼의 데이터를 삽입하는 함수는 lambda를 사용하여 임시 함수를 정의한다.
  • 각 컬럼이 null인지 파악하기 위해서 pandas라이브러리의 notnull() 메서드를 사용한다.

[ 회고 ]

  • apply() 메서드와 lambda를 활용하여 데이터 프레임에서 컬럼 단위로 데이터를 손쉽게 가공할 수 있다.
  • 값이 결측값이 아닌 경우 True를 반환시키는 pd.notnull()를 활용하여 null값 여부를 판단하는 조건을 생성할 수 있다.