반응형

09-03. 복사 (copy)

DataFrame.copy(deep=True)

 

개요


Pandas객체를 복사합니다. deep copy와 shallow copy기능을 지원합니다.

 

사용법


기본 사용법
df.copy(deep=True)
deep : {True or False} 기본값 True

deep = True인 경우를 deep copy라고 하며 원본과는 완전하게 별개인 복사본이 생성됩니다. 사본과 원본의 수정은 서로에게 영향을 끼치지 않습니다.
deep = False인 경우를 shallow copy라고 하며 원본의 데이터 및 인덱스를 복사하지않고 새 객체를 호출합니다.
즉, 원본의 데이터가 수정되면 사본의 데이터도 수정되며, 그 반대도 마찬가지 입니다.

반응형

 

예시


먼저, 아래와 같이 series객체를 하나 만들고, deep copy본과 shallow copy본인 객체를 생성해봅니다.

sr = pd.Series([1, 2], index=["col1", "col2"])
deep = sr.copy(deep=True)
shallow = sr.copy(deep=False
print(sr)
>>
col1    1
col2    2
dtype: int64

이제 원본인 sr과 deep copy본인 deep, shallow copy본인 shallow의 요소를 변경하고 다시 출력해보겠습니다.

sr[0] = 9
shallow[1] = 8
deep[1]=7

원본 출력시
shallow에서 변경한 내용이 원본인 sr에도 적용된 것을 확인할 수 있습니다.

print(sr)
>>
col1    9
col2    8
dtype: int64

shallow copy본 출력시
sr에서 변경한 내용이 사본인 shallow에도 적용된 것을 확인할 수 있습니다.

print(shallow)
>>
col1    9
col2    8
dtype: int64

deep copy본 출력시
원본이나 다른 사본의 변경내용과 무관하게 자기 자신의 변경내용만이 적용된 것을 확인할 수 있습니다.

print(deep)
col1    1
col2    7
dtype: int64

DataFrame의 경우

마찬가지로 기본적인 3x3 DataFrame객체를 생성해보겠습니다.

col = ['col1','col2','col3']
row = ['row1','row2','row3']
df = pd.DataFrame(data=[[1,2,3],[4,5,6],[7,8,9]],index=row,columns=col)
deep = df.copy(deep=True)
shallow = df.copy(deep=False)
print(df)
>>
      col1  col2  col3
row1     1     2     3
row2     4     5     6
row3     7     8     9


이제 원본과 copy본의 값을 아래와 같이 변경하고 출력해보겠습니다.

df['col1']['row1']=99
shallow['col2']['row2']=88
deep['col2']['row2']=77

원본 출력시
shallow에서 변경한 내용이 원본인 df에도 적용된 것을 확인할 수 있습니다.

print(df)
>>
      col1  col2  col3
row1    99     2     3
row2     4    88     6
row3     7     8     9

shallow copy본 출력시
df에서 변경한 내용이 사본인 shallow에도 적용된 것을 확인할 수 있습니다.

print(shallow)
>>
      col1  col2  col3
row1    99     2     3
row2     4    88     6
row3     7     8     9

deep copy본 출력시
원본이나 다른 사본의 변경내용과 무관하게 자기 자신의 변경내용만이 적용된 것을 확인할 수 있습니다.

print(deep)
>>
      col1  col2  col3
row1     1     2     3
row2     4    77     6
row3     7     8     9
반응형

+ 최근 글