컴퓨터/Python
[Python] 파이썬, A value is trying to be set on a copy of a slice from a DataFrame 경고
sjblog
2023. 3. 26. 08:45
반응형
경고명: 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
반응형