해결된 질문
작성
·
336
·
수정됨
0
안녕하세요! 답이 나오기는 하는데 이 copy warning은 뭘까요? 어떻게 해결할까요?
# print(df.shape)
line = int(len(df) * 0.8)
df = df[:line]
# df.shape
# print(df.isnull().sum())
r1 = df['f1'].std()
med = df['f1'].median()
df['f1'] = df['f1'].fillna(med)
# df.isnull().sum()
r2 = df['f1'].std()
abs(r1 - r2)
<ipython-input-47-f10e742b8062>:10: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
df['f1'] = df['f1'].fillna(med)
3.564064430008667
답변 1
0
코랩이 판다스 버전이 높아 시험환경보다 워닝(에러 아님)을 더 잘 출력하고 있어요!
방법
데이터 잘라낼때 아래와 같이 사용하거나
df = df.iloc[:line]
방법
df = df[:line]
이렇게 사용하고 싶다면 copy()를 붙여주세요
df = df[:line].copy()
loc/iloc로 해결하기에는 어려울 수도 있으니 시험에서 혹시나 SettingWithCopyWarning 에러나면 해결이 우선이니 새로운 변수에 넣거나 잘라낸게 있다면 copy()를 붙여주세요