판다스 작업 중에 아래처럼 에러가 나는 경우가 있는데요.
Warning (from warnings module): File "C:\python\lib\site-packages\pandas\util\_decorators.py", line 311 return func(*args, **kwargs) SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy |
문제 발생 원인
이 문제는 데이터 프레임이 연결되어 할당되었기 때문에 발생한 오류입니다.
즉, 기존 df를 슬라이싱한 데이터 프레임에서 작업 중이므로 수행하는 모든 작업이
원본 DataFrame에 반영되어 수정되기 때문입니다.
아래처럼 mask를 입혀서 슬라이싱 해서 사용중인 df1이 있는데요.
이 df1에 대한 수정을 하면 df에도 수정이 되어야 하기 때문에 나타납니다.
mask = (df['date'] >= dt_last)
df1 = df.loc[mask]
이 때에는 df.loc[mask].copy() 명령어를 통해서 복사해주어야 합니다.
단순히 copy()를 해서 새롭게 메모리를 할당함으로써 해당 문제를 해결할 수 있습니다.
즉 위를 아래와 같이 수정하여 수정코드로 입력해야지 에러가 나지 않습니다.
mask = (df['date'] >= dt_last)
df1 = df.loc[mask].copy()
그럼 잘 사용하시기 바랍니다.
'Programming > Python' 카테고리의 다른 글
판다스에서 특정 조건을 만족하는 값을 찾아서 변경하기 (0) | 2022.08.30 |
---|---|
파이썬 웹사이트 크롤링하기 - 5. Selenium headless (0) | 2022.08.30 |
파이썬 웹사이트 크롤링 하기 - 4. Selenium 사용하기 (0) | 2022.08.27 |
파이썬 웹사이트 크롤링하기 - 3.BeautifulSoup/find함수로 찾기 (0) | 2022.08.26 |
파이썬 웹사이트 크롤링하기- 2. 오늘날씨 가져오기 (0) | 2022.08.23 |