import pandas as pd
df = pd.DataFrame([10,11,12])
df2 = df[df[0] >= 11]
df2['flag'] = 'o'
예를 들어 이 코드는 경고가 뜸
이유는 df에서 파생된 df2에서 ['flag'] 컬럼에 'o'를 할당했기 때문
( Hidden Chaning에 해당함 )
df = pd.DataFrame([10,11,12])
df2 = df[df[0] >= 11].copy()
df2['flag'] = 'o'
다음과 같이 df2를 df2를 copy한다고 명시적으로 표현하여 깊은복사를 하면 오류가 사라짐
copy를 하지 않을 경우 df2를 수정할 때 원천인 df의 데이터도 수정될 수 있다는 위험성을 알려주는 거 같음
df = pd.DataFrame([10,11,12]) # 값 할당
df2 = df[df[0] >= 11] # 값 추출
df = pd.DataFrame([10,11,12]) # 값 할당
df[df[0] >= 11]['flag'] = 'o' # 특정 값 추출 후 값 할당
SettingWithCopyWarning 에러 발생.
-> df의 flag 컬럼이 생성되지 않음
왜냐면 pandas에서 특정 값을 추출할 때는 기본적으로 view임
( 복사의 개념 x )