Як (і навіщо) зробити копію pandas dataframe


Щоразу, коли ви створюєте підмножину pandas DataFrame, а потім змінюєте підмножину, оригінальний DataFrame також буде змінено.

З цієї причини завжди доцільно використовувати .copy() під час створення підмножини, щоб зміни, які ви вносите до підмножини, також не вносилися в оригінальний DataFrame.

Наступні приклади показують, як (і навіщо) зробити копію pandas DataFrame під час створення підмножини.

Приклад 1: підмножина 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:

 #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

Зауважте, що перше значення стовпця team було змінено з «A» на «X» як у підмножині DataFrame , так і в оригінальному DataFrame.

Це тому, що ми не зробили копію оригінального 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, але цього разу ми використовуємо .copy() , щоб створити копію оригінального DataFrame:

 #define subsetted DataFrame
df_subset = df[0:4]. copy ()

Тепер припустімо, що ми змінимо перше значення стовпця team підмножини 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

Зауважте, що перше значення стовпця team було змінено з «A» на «X» лише в підмножині DataFrame.

Оригінальний DataFrame залишається недоторканим, оскільки ми використовували .copy() для створення його копії під час створення підмножини.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в pandas:

Як видалити рядки в Pandas DataFrame на основі умови
Як відфільтрувати Pandas DataFrame за кількома умовами
Як використовувати фільтр «NOT IN» у Pandas DataFrame

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *