👩‍💻 Develope/Python

[Pandas] apply로 다중 반환 값을 여러 열에 할당하기

heywantodo 2024. 8. 22. 13:29
728x90
반응형

[Pandas] apply로 다중 반환 값을 여러 열에 할당하기

데이터 프레임에서 각 행의 특정 열에 함수를 적용하고, 그 결과를 여러 열에 나누어 저장하는 작업은 데이터 처리 과정에서 자주 발생하는 요구다.

 

이는 apply 함수를 활용하여 이를 간단하게 구현할 수 있다. apply와 lambda를 활용해 특정 열에 함수를 적용하고,

결과를 여러 열로 나누어 담는 방법에 대해 알아보자.

 

다중 반환 값 할당

판다스의 apply 함수는 데이터프레임의 행(axis=1) 또는 열(axis=0)에 대해 함수를 적용할 수 있게 해준다.

이때, 반환된 값이 여러 개라면 이를 새로운 열로 확장할 수 있다.

 

아래는 데이터프레임의 'A'열에 대해 각 값을 두 배와 세 배로 만드는 함수를 적용하고,

그 결과를 새로운 두 개의 열에 저장하는 예제이다.

import pandas as pd

# 샘플 데이터프레임 생성
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# 두 배와 세 배 값을 반환하는 함수 정의
def double_and_triple(a):
    return a * 2, a * 3

# apply 함수로 'A' 열에 대해 함수를 적용하고, 결과를 새로운 열에 확장
df[['Double_A', 'Triple_A']] = df.apply(lambda x: double_and_triple(x['A']), 
	axis=1, result_type='expand')

print(df)
   A  B  Double_A  Triple_A
0  1  4         2         3
1  2  5         4         6
2  3  6         6         9

각 행의 'A' 값이 'double_and_triple' 함수에 의해 처리되었고, 그 결과가 각각 'Double_A'와 'Triple_A' 열로 확장되었다.

 

result_type

다중 반환값을 할당할 때, result_type='expand' 를 사용하지 않으면 에러가 발생한다.

result_type 옵션에는 expand 뿐만 아니라 reduce, broadcast가 있는데 각 옵션들은 다음과 같은 경우에 사용한다.

expand 반환된 값을 열로 확장환다. 반환된 값이 튜플이나 리스트일 때, 여러 열에 나눠 할당된다.
reduce 기본 동작으로, 반환된 값을 하나의 시리즈로 반환한다.
broadcast 반환된 값을 입력과 동일한 형태로 확장한다.

 

 

728x90
반응형