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 | 반환된 값을 입력과 동일한 형태로 확장한다. |
반응형
'👩💻 Develope > Python' 카테고리의 다른 글
[Python] SQLAlchemy 이해하기 (0) | 2024.09.02 |
---|---|
[Pandas] to.sql() (0) | 2024.08.23 |
[Pandas] 데이터프레임에서 날짜와 시간 다루기 (0) | 2024.08.09 |
[Python] 파일 날짜 가져오기 (0) | 2024.08.08 |
[Python] multiprocessing (0) | 2024.08.01 |