[Python] Pandas DataFrame에서 for문을 이용해 특정 컬럼 값 변경하기

2025. 5. 18. 18:49·개발 (Development)/Python

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
'개발 (Development)/Python' 카테고리의 다른 글
  • [Python] 배열을 1000개 단위로 나누어 처리하는 방법
  • [Python] Pandas DataFrame에서 값이 저장되지 않는 이유와 해결 방법
  • [Python] Docker image load
  • [Python] pandas를 이용한 DataFrame 차집합 구하기
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (184)
      • 개발 (Development) (120)
        • Algorithm (1)
        • Angular (1)
        • AWS (4)
        • DeepSeek (2)
        • Docker (6)
        • Git (3)
        • Java (20)
        • JavaScript (4)
        • Kafka (4)
        • Kubernetes (2)
        • Linux (6)
        • PostgreSQL (33)
        • Python (17)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (6)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (10)
      • 기타 (Others) (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DevOps
    리눅스 마스터
    오답노트
    JSON
    백준
    springboot
    백준온라인저지
    AWS
    자바
    java
    pandas
    javascript
    백준자바
    MyBatis
    Kafka
    Kubernetes
    백준알고리즘
    typescript
    PostgreSQL
    docker
    리눅스 마스터 2급
    Vue.js
    ADsP
    Linux
    데이터분석
    deepseek
    Linux master
    Vue
    리눅스 마스터 2급 2차
    python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Python] Pandas DataFrame에서 for문을 이용해 특정 컬럼 값 변경하기
상단으로

티스토리툴바