[Python] df.copy() :: 복사본 만들기 / 얕은복사 & 깊은 복사
반응형
판다스에는 데이터프레임의 복사본을 만들어주는 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()를 사용해야한다.
728x90
'Python > Pandas' 카테고리의 다른 글
[Python] 데이터프레임 합치기 :: pd.merge() (0) | 2020.10.13 |
---|---|
[Python] 데이터프레임 txt로 저장하기 (0) | 2020.09.04 |
[Pandas] pd.read_html() :: html에서 표 가져오기/데이터프레임으로 만들기 (0) | 2020.03.31 |
[Python] 문자열 처리 :: 양 끝 공백제거/맨 앞 공백제거/맨 뒤 공백제거 (1) | 2020.02.18 |
[Python] pd.read_csv & pd.to_csv :: csv파일 불러오기 & 내보내기, 저장하기 (1) | 2019.11.26 |
Comments