반응형
경고명: A value is trying to be set on a copy of a slice from a DataFrame
원인: Pandas 데이터프레임에서 일부 데이터를 선택하여 슬라이스(slice)한 후에 그 슬라이스의 사본(copy)에 값을 할당하려고 할 때 경고됩니다.
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
subset = df.loc[:, 'A']
subset[0] = 0
subset은 df의 일부분인 사본(copy)이기 때문에 실제 데이터인 df에는 영향을 미치지 않습니다.
해결법:
방법1. 실제 데이터인 df를 직접 수정합니다.
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
subset = df.loc[:, 'A']
df.loc[0, 'A'] = 0
방법2. 사본(copy)인 subset을 굳이 수정하여야 한다면, copy()를 사용할 것
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
subset = df.copy().loc[:, 'A']
subset[0] = 0
방법3. 귀찮다. 그냥 경고창을 꺼줍니다.
pd.options.mode.chained_assignment = None
반응형
'컴퓨터 > Python' 카테고리의 다른 글
[Python] 파이썬, threading 간단 예제 (0) | 2023.03.27 |
---|---|
[Python] 파이썬, multiprocessing 간단 예제 (0) | 2023.03.27 |
[Python] 파이썬, sqlite3 사용하기 (0) | 2023.03.23 |
[Python] 파이썬, 아나콘다 명령어 모음 (0) | 2023.03.08 |
[Python] 파이썬, iloc(), loc() 차이 (0) | 2022.10.09 |