2023-03-17 19:19:15

pandas 데이터프레임에 특정 컬럼의 값들에 어떤 함수를 적용하고 싶다면 데이터프레임의 apply() 메소드를 사용할 수 있습니다. 

 

다음과 같은 데이터프레임이 있다고 가정하겠습니다. 학생 5명의 수학, 영어, 역사 점수를 담고 있습니다. 

 

import pandas as pd


df = pd.DataFrame([[95, 92, 88], [84, 67, 88], [91, 99, 68], [87, 79, 81], [77, 92, 85]],
        index=['A', 'B', 'C', 'D', 'E'],
        columns=['math', 'english', 'history'],
    )
print(df)

 

 

df.apply() 사용법

만약 수학 점수(math) 컬럼의 값에 일괄적으로 10을 더하고, 100점을 넘는 경우에는 100점이 되게 하려면 다음과 같은 함수(add10)를 정의한 후에 수학 점수 컬럼에 apply 메소드로 적용해주면 됩니다. 

 

def add10(score):
    result = score + 10
    if result > 100:
        result = 100
    return result
    
df['math'] = df['math'].apply(add10)
print(df)

 

 

모든 학생의 수학 점수에 10점이 더해지고 100을 초과한 경우에는 100점이 된 것을 확인하실 수 있습니다. apply 메소드 꽤 유용하니 필요할 때 잘 사용하시기 바랍니다. 반복문을 사용해서 각 행의 원하는 컬럼의 값을 하나씩 변경하는 것보다 훨씬 효율적입니다. 

 

그리고 적용할 함수가 간단하다면 def로 별도로 함수를 정의하지 않고 lambda로 한 줄로 정의한 함수를 사용할 수도 있습니다. 입력값을 2로 나눠주는 함수를 lambda로 정의해서 적용해줬습니다. 

 

df['history'] = df['history'].apply(lambda x : x/2)
print(df)