이것저것 담는 블로그

Pandas SettingWithCopyWarning 해결방법 본문

IT/Python

Pandas SettingWithCopyWarning 해결방법

버즈와우디 2021. 10. 18. 20:27

에러 원인

SettingWithCopyWarning : a value is trying to be set on a copy of a slice from a dataframe
SettingWithCopyWarning은 데이터프레임의 복사본에서 값을 바꾸려할 때 나타난다.
보통 iterrows()로 데이터프레임을 조회하다가 거기서 아래처럼 값을 바꾸려하면 발생한다.

for idx, row in sample_df.iterrows():
	row['score'] = 100


row는 sample_df의 하나의 레코드로 시리즈 타입인데 여기서는 그 시리즈에 있는 값을 바꾼다고 읽어서 실제 sample_df의 값은 바뀌지 않는다.

해결방법
데이터프레임의 loc을 활용하면 값을 변경할 수 있다.

for idx, row in sample_df.iterrows():
	sample_df.loc[idx, 'score'] = 100



하나 더
여러 개의 값을 한꺼번에 바꾸고싶을 땐 아래처럼 쓴다.

for idx, row in sample_df.iterrows():
	sample_df.loc[idx, ['score', 'grade']] = 100, 'A'