본문 바로가기

[Python] df.copy() :: 복사본 만들기 / 얕은복사 & 깊은 복사

Python/Pandas 2020. 6. 18.

반응형

판다스에는 데이터프레임의 복사본을 만들어주는 pandas.DataFrame.copy가 있다. 이는 a = b와는 다른 방식의 복사이다.

a = b는 원본 데이터가 변하면 똑같이 변하는 얕은 복사인 반면,

pandas.DataFrame.copy는 복사 당시의 데이터프레임 상태만 복사되는 깊은 복사이다.

얕은 복사를 하면 복사본은 원본과 데이터/index를 공유하지만, 깊은 복사는 복사본이 자신만의 데이터/index를 갖게한다.

 

 

예시 데이터

import pandas as pd
a = pd.DataFrame([['Kim', 23], ['Lee', 12],  ['Jeong', 28]], columns = ['Name', 'Age'])
a

 

just_copy = a

pandas_copy = a.copy()

just_copy는 일반적인 b = a로 복사하였고 pandas_copy는 pandas.DataFrame.copy()로 복사하였다.

이를 조회했을 때, 두 변수 모두 원데이터인 a와 같은 데이터프레임이 조회된다.

 

하지만 원데이터를 변환하면 두 데이터프레임에 차이가 나타난다.

a['Name'] = '바뀌었지롱~!' 
just_copy

 

복사 후 바로 데이터를 조회했을 때는 별 차이가 없지만, 데이터프레임의 데이터를 변환하면 just_copy(a = b를 한 경우)의 데이터도 똑같이 변경된다.

따라서 데이터의 원본을 보존하기 위해 데이터를 복사해두는 것이라면 panda.DataFrame.copy()를 사용해야한다.

 

 

 

Reference

 

 

 

728x90

Comments