반응형

 

 

💬 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[]를 명확하게 써주면 경고를 방지할 수 있습니다.
반응형

+ Recent posts