반응형
💬 SettingWithCopyWarning:
Pandas에서 특정 조건으로 값을 수정할 때 자주 등장하는 애매한 경고!
"왜 바꿨는데 경고가 뜨지?" 싶은 분들을 위한 설명입니다.
❗ 경고 메시지 예시
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
🔍 원인: DataFrame에서 복사본에 값을 할당할 때
df2 = df[df['score'] > 90]
df2['grade'] = 'A' # ❗ 경고 발생 가능
→ 이 코드는 원본 df가 아니라 df의 일부 복사본에 값을 설정하려고 하므로 경고가 뜹니다.
🛠️ 해결 방법
✔ .loc[]을 명시적으로 사용
df.loc[df['score'] > 90, 'grade'] = 'A' # ✅ 안전한 방식
✔ .copy()를 사용해 아예 복사본임을 명시
df2 = df[df['score'] > 90].copy()
df2['grade'] = 'A' # ✅ 명시된 복사본엔 경고 없음
✅ 마무리 정리
- Pandas는 슬라이싱 결과가 복사본인지, 뷰인지 애매할 수 있어 경고를 띄웁니다.
- .copy()나 .loc[]를 명확하게 써주면 경고를 방지할 수 있습니다.
반응형
'IT' 카테고리의 다른 글
Git & GitHub 완전 초보자 가이드(2025 최신) (0) | 2025.06.27 |
---|---|
VSCode 확장팩 TOP 5 (2025 최신) + 실사용 꿀팁까지! (0) | 2025.06.26 |
[에러 해결] IndexError – 인덱스를 벗어났다고요? (0) | 2025.06.20 |
[에러 해결] TypeError: 'int' object is not subscriptable – 리스트처럼 쓰면 안 돼요! (0) | 2025.06.19 |
[에러 해결] KeyError – 존재하지 않는 키라고요? (0) | 2025.06.11 |