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)
'Dev > python' 카테고리의 다른 글
[python] 내부망(폐쇄망)에 .whl 파일을 통해서 패키지 설치하는 방법 (0) | 2023.05.17 |
---|---|
[python] json 모듈의 dumps(), loads() 차이 (0) | 2023.05.13 |
[python] 사설 저장소(nexus) 통해 pip install 하는 방법 (0) | 2023.04.27 |
[python] 얕은 복사와 깊은 복사, 이거 모르면 큰일남 (0) | 2023.03.18 |
[pandas] 데이터프레임을 to_csv() 메소드로 csv 파일로 저장할 때 한글 깨짐 문제 해결 방법 (0) | 2023.03.15 |
[sqlalchemy] from sqlalchemy import nullslast 에러 해결법 (0) | 2023.03.06 |
PyQt6와 PySide6의 라이선스 차이 (0) | 2023.02.20 |
[Flask] Flask API 서버에 인증 기능 넣기 (0) | 2023.02.19 |