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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *