tmp에 df를 넣어주는데,
tmp = df
tmp["age"] = tmp["age"].fillna(0)
tmp
tmp가 새로이 생기는 것이고 tmp의 nan 값에만 0이 채워지는 것이 아니라,
df도 변경되더라고요.
pandas에서
tmp = df는 tmp가 변경되면, df도 변경되는 원리인가요?
tmp를 쓴다는 자체가 임시로 tmp에 저장하고, tmp만 변경하여
원래값은 보호해 두었다가, 후에 원래값은 그대로 이용하려고 쓰는 것으로 알고 있어서 혼란스럽니다.
파이썬 문법을 보시면 깊은 복사와 얕은 복사 부분이 있습니다.
리스트는 값을 복사(얕은 복사)해서 사용하셔야 합니다.
tmp=df 는 동일한 지점의 주소를 가리키는 변수들입니다.
하지만 tmp=df[:] 하시게 되면 얕은 복사로 리스트의 값을 단순히 복사로 이루어 집니다. 같은 주소를 가지지 않습니다.
댓글