Pandas dataframe의 복사본을 만드는 방법(및 이유)
pandas DataFrame의 하위 집합을 생성한 다음 하위 집합을 수정할 때마다 원본 DataFrame도 수정됩니다.
이러한 이유로 하위 집합에 대한 변경 사항이 원본 DataFrame에도 적용되지 않도록 하위 집합을 설정할 때 항상 .copy()를 사용하는 것이 좋습니다.
다음 예에서는 하위 설정 시 Pandas DataFrame의 복사본을 만드는 방법(및 이유)을 보여줍니다.
예시 1: 복사본 없이 DataFrame 하위 설정
다음과 같은 팬더 DataFrame이 있다고 가정합니다.
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4]}) #view DataFrame print (df) team points assists 0 to 18 5 1 B 22 7 2 C 19 7 3 D 14 9 4 E 14 12 5 F 11 9 6 G 20 9 7:28 a.m. 4
이제 원본 DataFrame의 처음 4개 행만 포함하는 하위 집합을 생성한다고 가정합니다.
#define subsetted DataFrame df_subset = df[0:4] #view subsetted DataFrame print (df_subset) team points assists rebounds 0 A 18 5 11 1 B 22 7 8 2 C 19 7 10 3 D 14 9 6
하위 집합의 값 중 하나를 변경하면 원래 DataFrame의 값도 변경됩니다.
#change first value in team column
df_subset. team [0] = ' X '
#view subsetted DataFrame
print (df_subset)
team points assists
0X18 5
1 B 22 7
2 C 19 7
3 D 14 9
#view original DataFrame
print (df)
team points assists
0X18 5
1 B 22 7
2 C 19 7
3 D 14 9
4 E 14 12
5 F 11 9
6 G 20 9
7:28 a.m. 4
하위 집합 DataFrame 과 원본 DataFrame 모두에서 팀 열의 첫 번째 값이 “A”에서 “X”로 변경되었습니다.
이는 원본 DataFrame의 복사본을 만들지 않았기 때문입니다.
예 2: 복사를 사용하여 DataFrame 하위 설정
다음과 같은 pandas DataFrame이 있다고 다시 가정해 보겠습니다.
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], ' points ': [18, 22, 19, 14, 14, 11, 20, 28], ' assists ': [5, 7, 7, 9, 12, 9, 9, 4]}) #view DataFrame print (df) team points assists 0 to 18 5 1 B 22 7 2 C 19 7 3 D 14 9 4 E 14 12 5 F 11 9 6 G 20 9 7:28 a.m. 4
원본 DataFrame의 처음 4개 행만 포함하는 하위 집합을 생성하지만 이번에는 .copy()를 사용하여 원본 DataFrame의 복사본을 만든다고 다시 가정해 보겠습니다.
#define subsetted DataFrame df_subset = df[0:4]. copy ()
이제 DataFrame 하위 집합의 팀 열 첫 번째 값을 변경한다고 가정합니다.
#change first value in team column
df_subset. team [0] = ' X '
#view subsetted DataFrame
print (df_subset)
team points assists
0X18 5
1 B 22 7
2 C 19 7
3 D 14 9
#view original DataFrame
print (df)
team points assists
0 to 18 5
1 B 22 7
2 C 19 7
3 D 14 9
4 E 14 12
5 F 11 9
6 G 20 9
7:28 a.m. 4
DataFrame 하위 집합에서만 팀 열의 첫 번째 값이 “A”에서 “X”로 변경되었습니다.
하위 집합을 생성할 때 .copy()를 사용하여 복사본을 만들었으므로 원본 DataFrame은 그대로 유지됩니다.
추가 리소스
다음 튜토리얼에서는 Pandas에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
조건에 따라 Pandas DataFrame에서 행을 삭제하는 방법
여러 조건에서 Pandas DataFrame을 필터링하는 방법
Pandas DataFrame에서 “NOT IN” 필터를 사용하는 방법