pandas를 사용하다가 SettingWithCopyWarning
이 발생하였다.
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:1: 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
"""Entry point for launching an IPython kernel.
data = {"x": 2**np.arange(5),
"y": 3**np.arange(5),
"z": np.array([45, 98, 24, 11, 64])}
index = ["a", "b", "c", "d", "e"]
df = pd.DataFrame(data=data, index=index)
df
x y z
a 1 1 45
b 2 3 98
c 4 9 24
d 8 27 11
e 16 81 64
df[df['z']<50]['z'] = 0
df[df['z']<50]
로 DataFrame 복사본을 하나 더 만들고, 그 DataFrame을 가지고 'z' column을 찾아 assignment를 수행한다. df.loc[df['z']<50,'z']
을 사용하면 의도한대로 df의 변경이 이루어진다..loc
을 쓰는 것이 더 권장된다.