Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 블라인드테스트
- 요한하리
- ReinforcementLearning
- dataanalysis
- SQL
- 코딩테스트
- agviewer
- 증권투자권유자문인력
- python
- 인도가격
- 주식
- Nas
- 독서모임
- 독후감
- 통화정책파급경로
- potatoeseater
- 도둑맞은집중력
- 파이썬
- 책읽는케이크
- 재무엑셀
- RL
- 재무제표
- montecarlo
- 통화주의학파
- ldbc
- 파생상품평가모형
- pandas
- 카카오
- 집중하는법
- 프로그래머스
Archives
- Today
- Total
이것저것 담는 블로그
Pandas SettingWithCopyWarning 해결방법 본문
에러 원인
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'
'IT > Python' 카테고리의 다른 글
Python any, all 메서드 (0) | 2022.11.30 |
---|---|
Pandas DataFrame 행 조회할 때 iterrows() 헷갈리지 않게 사용하기 (4) | 2021.08.04 |