데이터프레임을 조작하다 보면 내가 정의해놓은 함수에 따라서
전체 데이터프레임이나 특정한 컬럼의 값들을 일괄적으로 변경하기를 원할 수 있다.
이런 경우에 pandas의 apply 함수를 활용한다.
import pandas as pd
df = pd.DataFrame({'Employee ID':[111, 222, 333, 444],
'Employee Name':['Chanel', 'Steve', 'Mitch', 'Bird'],
'Salary [$/h]':[35, 29, 38, 20],
'Years of Experience':[3, 4 ,9, 1]})
df
직원 이름의 글자 수를 구해서 새로운 컬럼 length에 저장하려고 한다.
파이썬 기본내장함수로 문자열의 길이를 구하는 함수 len() 이 있으므로
apply 안에 내가 적용하고 싶은 함수 len의 이름을 써준다.
df['Employee Name'].apply( len )
>>> 0 6
1 5
2 5
3 4
Name: Employee Name, dtype: int64
df['length'] = df['Employee Name'].apply( len )
df
직접 만든 함수를 apply 할 수도 있다.
아래 예제를 통해 알아보자.
# 시급이 30이상이면 A, 그렇지 않으면 B라고 구분한 컬럼을 추가하세요.
# 1. 시급정보가 입력되면 A인지, B인지를 리턴하는 함수를 만든다
def grouping(salary):
if salary >= 30:
return 'A'
else:
return 'B'
# 2. 위에서 만든 함수를,
# 데이터 프레임의 Salary [$/h] 컬럼에 저장된 데이터들에 모두 적용해야 한다.
df['Salary [$/h]'].apply(grouping)
>>> 0 A
1 B
2 A
3 B
Name: Salary [$/h], dtype: object
df['Group'] = df['Salary [$/h]'].apply(grouping)
df
'Python > Pandas' 카테고리의 다른 글
Pandas 활용(9) - 데이터프레임 정렬하기 sort_values, sort_index (0) | 2022.11.28 |
---|---|
Pandas 활용(8) - str 관련 메소드 (0) | 2022.11.28 |
Pandas 활용(6) - 범주로 묶어 집계하기 groupby, agg (0) | 2022.11.27 |
Pandas 활용(5) - 결측값(NaN) 처리 (0) | 2022.11.27 |
Pandas 활용(4) - 인덱스명, 컬럼명 변경 (0) | 2022.11.27 |