Bagaimana (dan mengapa) membuat salinan pandas dataframe
Setiap kali Anda membuat subset dari pandas DataFrame dan kemudian memodifikasi subset tersebut, DataFrame asli juga akan dimodifikasi.
Oleh karena itu, sebaiknya gunakan .copy() saat membuat subset sehingga perubahan yang Anda buat pada subset tidak juga dilakukan pada DataFrame asli.
Contoh berikut menunjukkan bagaimana (dan mengapa) membuat salinan DataFrame pandas saat melakukan subsetting.
Contoh 1: Subsetting DataFrame tanpa salinan
Misalkan kita memiliki panda DataFrame berikut:
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
Sekarang misalkan kita membuat subset yang hanya berisi empat baris pertama dari DataFrame asli:
#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
Jika kita mengubah salah satu nilai di subset, nilai DataFrame asli juga akan berubah:
#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
Perhatikan bahwa nilai pertama kolom tim diubah dari “A” menjadi “X” di subset DataFrame dan DataFrame asli.
Ini karena kami tidak membuat salinan DataFrame asli.
Contoh 2: Subsetting DataFrame dengan Copy
Mari kita asumsikan lagi bahwa kita memiliki pandas DataFrame berikut:
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
Mari kita asumsikan lagi bahwa kita membuat subset yang hanya berisi empat baris pertama DataFrame asli, namun kali ini kita menggunakan .copy() untuk membuat salinan DataFrame asli:
#define subsetted DataFrame df_subset = df[0:4]. copy ()
Sekarang anggaplah kita mengubah nilai pertama kolom tim dari subset 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
Perhatikan bahwa nilai pertama kolom tim diubah dari “A” menjadi “X” hanya di subset DataFrame.
DataFrame asli tetap utuh karena kami menggunakan .copy() untuk membuat salinannya saat membuat subset.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:
Cara menghapus baris di Pandas DataFrame berdasarkan kondisi
Cara memfilter Pandas DataFrame pada berbagai kondisi
Cara menggunakan filter “TIDAK DALAM” di Pandas DataFrame