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)
'코딩 > pandas, matplotlib' 카테고리의 다른 글
[pandas] 데이터프레임의 행들을 반복문에서 얻고 싶다면, df.iterrows() (0) | 2023.01.14 |
---|---|
[matplotlib] 박스플롯(boxplot) 해석하기 (0) | 2022.11.04 |
[pandas] 컬럼 값이 특정 조건에 부합하는 행들의 특정 컬럼 값 수정하기 (0) | 2022.10.02 |
[pandas] 데이터프레임 행 또는 컬럼 삭제하기, drop() 메소드 (0) | 2022.10.01 |
[pandas] SQL의 JOIN 역할을 하는 pd.merge와 df.join (0) | 2022.08.15 |
[pandas] 파이썬 판다스로 엑셀 파일을 읽고 쓰려면 openpyxl도 추가로 설치해야 함 (0) | 2022.08.15 |
[pandas] 중복 데이터 제거하기, 데이터프레임 drop_duplicates() 메소드 (0) | 2022.08.01 |
[pandas] 누락된 데이터가 - 등의 기호로 표현되어 있을 때 NaN으로 변경하는 방법, replace() 메소드 (0) | 2022.07.29 |