pandas
를 사용하다 보면 DataFrame의 각 행을 순회하면서 특정 컬럼의 값을 조건에 따라 변경해야 할 때가 있습니다. 가장 직관적인 방법은 for
문을 사용하는 것이며, 본 글에서는 그 기본 사용법을 소개합니다.
1. 예시 데이터프레임 생성
우선 간단한 예시 데이터프레임을 생성합니다.
import pandas as pd
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie'],
'score': [85, 90, 78]
})
2. for
문으로 특정 컬럼 값 변경
이제 for
문을 통해 score
컬럼이 80보다 작은 경우, 해당 값을 80으로 변경해보겠습니다.
for idx, row in df.iterrows():
if row['score'] < 80:
df.at[idx, 'score'] = 80 # 조건을 만족하면 값 변경
이 코드는 각 행을 순회하면서 조건(score < 80
)에 맞는 경우에만 값을 수정합니다.
3. 결과 확인
print(df)
출력 결과는 다음과 같습니다:
name score
0 Alice 85
1 Bob 90
2 Charlie 80
4. 주의사항 및 팁
df.iterrows()
는 성능상 작은 규모의 데이터에 적합합니다. 수천, 수만 건 이상인 경우에는apply()
함수나 벡터 연산을 사용하는 것이 훨씬 효율적입니다.- 값을 수정할 때는
df.at[idx, '컬럼명'] = 값
형태를 사용하는 것이 가장 안전하고 빠릅니다.
5. 대안: apply()
를 활용한 방법
만약 성능이 중요하거나 더 간결한 코드가 필요하다면, apply()
를 이용한 방법도 고려해볼 수 있습니다.
df['score'] = df['score'].apply(lambda x: 80 if x < 80 else x)
이 방법은 속도 면에서 효율적이며, 조건이 복잡하지 않을 경우 추천됩니다.
정리
- DataFrame의 각 행을
for
문으로 순회하고 조건에 따라 값을 수정할 수 있습니다. df.at[]
을 사용하면 특정 셀의 값을 안전하게 수정할 수 있습니다.- 데이터 규모가 크다면
apply()
나 벡터 연산을 사용하는 것이 좋습니다.
반응형
'개발 (Development) > Python' 카테고리의 다른 글
[Python] 배열을 1000개 단위로 나누어 처리하는 방법 (0) | 2025.05.18 |
---|---|
[Python] Pandas DataFrame에서 값이 저장되지 않는 이유와 해결 방법 (0) | 2025.05.18 |
[Python] Docker image load (0) | 2025.02.23 |
[Python] pandas를 이용한 DataFrame 차집합 구하기 (0) | 2025.01.19 |
[Python] Python을 활용한 서로 다른 데이터베이스 쿼리 결과 비교 및 엑셀 매핑 (0) | 2025.01.12 |