Utwórz nową ramkę danych z istniejącej ramki danych w pandy?

Utwórz nową ramkę danych z istniejącej ramki danych w pandy?

Czasami musimy skopiować istniejące Ramka danych z danymi i indeksami. Jednak kopiowanie całości Ramka danych to także kolejny sposób, aby istniał bezpośredni związek między starym Ramka danych i nowy Ramka danych. Jeśli wprowadzimy jakieś zmiany w starym Ramka danych, wpłynie to również na nowe Ramka danych lub odwrotnie.

W tym artykule zobaczymy Pandy.Ramka danych.Metoda kopii (), który jest używany copy () DataFrame.

Jeśli chcemy stworzyć nowy Ramka danych z istniejącego Ramka danych, Następnie możemy użyć metody kopii (). W tym artykule zobaczymy, jak możemy użyć Pandas DataFrame.Kopiuj() metoda utworzenia innego Ramka danych z istniejącego Ramka danych.

Składnia podano poniżej:

Ramka danych.Kopia (głęboka = prawda)

W powyższej składni możemy zobaczyć, że są głębokie fałszowanie i prawdziwe.

Te dwie wartości są bardzo ważne, aby użyć Metoda kopii (). Zobaczmy w szczegółach o tych dwóch wartościach.

Deep (prawda): Ilekroć używamy Metoda kopii (), Głębokość jest domyślnie prawdziwa. Ta prawdziwa wartość wskazuje, że musimy skopiować wszystkie dane i wskaźniki z istniejących Ramka danych i utwórz nowy obiekt. Załóżmy, że przeprowadzamy jakąkolwiek manipulację nową Ramka danych, Nie wpłynie to na stare DataFrame lub odwrotnie, co oznacza, że ​​nie będzie związku związanego między starym a nowym Ramka danych, i oba mogą pracować niezależnie.

Deep (fałsz): Kiedy zachowujemy wartość głębokiego fałszu, copy () tworzy nowy obiekt bez danych i indeksu. Utworzy odniesienie do danych i indeksu oryginalnego ramki danych. Jeśli jakakolwiek manipulacja na oryginalnej ramce danych, wpłynie to również na płytką kopię danych lub odwrotnie.

Przykład 1:

Skopiuj ramkę danych za pomocą Deep = True:

# Python Przykład_1.py
importować pandy jako PD
data = 'tv_show_name': [„The Walking Dead”, „Merlin”, „Little Evil”,
„Napad pieniądze”]],
„TV_Streaming_name”: [„Netflix”, „FX”, „Disney Plus”,
'Amazon Prime'],
„show_season”: [4, 10, 4, 5],
„Główny aktor”: [„Rick Grimes”, „Mordred”, „Karl C. Młynarz',
„Sergio Marquina”]
df = pd.Ramka danych.from_dict (dane)
print („oryginalna ramka danych”)
Drukuj (DF)
wydrukować('_________________________________________________________')
dfcopy = df.Kopiuj()
print („skopiowana rama danych”)
Drukuj (dfcopy)

Linia 2: Importujemy pand biblioteki jako PD. Tutaj PD oznacza, że ​​importujemy bibliotekę pandy z nową nazwą przestrzeni nazw o nazwie PD. Możemy użyć PD zamiast używać pełnej nazwy pandy.

Linia 3 do 10: Stworzyliśmy DICT z niektórymi klawiszami i wartościami, w których wartości znajdują się na liście. Po utworzeniu słownika konwertujemy to na DataFrame (DF) używając Ramka danych.from_dict () metoda.

Linia 11 do 12: Drukujemy naszą DataFrame (DF), która pokazuje się na poniższym wyjściu.

Linia 14: Tworzymy kopię DF (DataFrame) z istniejącego DF (DataFrame). Tutaj nie używamy żadnego głębokiego = true, ponieważ jest to domyślnie. I, jak pokazano w głębokim = true, utworzy nowy obiekt ze wszystkimi danymi i wskaźnikami istniejącego Ramka danych, i nie będzie bezpośredniego związku między kopią Ramka danych i stare Ramka danych.

Linia 15 do 16: Drukujemy skopiowane DataFrame (DFCopy), a wyjście pokazano poniżej:

Wyjście:

Oryginalna ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Młynarz
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________
Skopiowana ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Młynarz
3 Money Heist Amazon Prime 5 Sergio Marquina
Proces zakończony kodem wyjściowym 0

Przykład 2:

W tym przykładzie zamierzamy manipulować starą Ramka danych i sprawdź, czy wpłynie to DFCopy DataFrame albo nie. Tutaj używamy Deep = True, aby skopiować ramkę danych:

# Python Przykład_2.py
importować pandy jako PD
data = 'tv_show_name': [„The Walking Dead”, „Merlin”, „Little Evil”,
„Napad pieniądze”]],
„TV_Streaming_name”: [„Netflix”, „FX”, „Disney Plus”,
'Amazon Prime'],
„show_season”: [4, 10, 4, 5],
„Główny aktor”: [„Rick Grimes”, „Mordred”, „Karl C. Młynarz',
„Sergio Marquina”]
df = pd.Ramka danych.from_dict (dane)
print („oryginalna ramka danych”)
Drukuj (DF)
wydrukować('_________________________________________________________')
dfcopy = df.Kopiuj()
print („skopiowana rama danych”)
Drukuj (dfcopy)
wydrukować('_________________________________________________________')
Drukuj („************ Manipulacja wykonana w oryginalnym DF *************”)
# Teraz przeprowadzamy manipulację danymi w oryginalnej ramce danych
# Zmieniamy wartości kolumny ('tv_show_name') na a, b, c, d
# Teraz zobaczymy, że wpłynie to na DFCopy DataFrame
df ['tv_show_name'] = df ['tv_show_name'].Wymień ([„The Walking Dead”,
„Merlin”, „Little Evil”, „Money Heist”], [„A”, „B”, „C”, „D”])
#Now Drukowanie zarówno DFCopy (Deep = True), jak i DF (oryginalne) DataFrame
print („oryginalna ramka danych”)
Drukuj (DF)
print („skopiowana rama danych”)
Drukuj (dfcopy)

Linia od 1 do 18: Wyjaśnienia są już podane w poprzednim programie w przykładzie 1.

Linia 23: Wymieniamy oryginał DF (dataFrame) kolumna (['tv_show_name']) wartości do ['a', 'b', 'c', 'd']. Teraz sprawdzimy, czy ta manipulacja w oryginalnym DF (DataFrame) wpłynie na dfcopy (głębokie = true), czy nie. Jak już wiemy, nie ma bezpośredniego związku między tym, że używamy głębokiego = true.

Linia 27 do 30: Drukujemy oryginał DF i kopia (DataFrame) jak pokazano na powyższym wyjściu. Ze wyjścia możemy potwierdzić, że zmiany dokonane w oryginalnej ramce danych (DF) nie mają wpływu na kopię (DataFrame):

Wyjście:

Oryginalna ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Młynarz
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________
Skopiowana ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Młynarz
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________
************ Manipulacja wykonana w oryginalnym DF ***************
Oryginalna ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 Netflix 4 Rick Grimes
1 B Fx 10 Mordred
2 c Disney plus 4 karl c. Młynarz
3 D Amazon Prime 5 Sergio Marquina
Skopiowana ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Młynarz
3 Money Heist Amazon Prime 5 Sergio Marquina

Z powyższego przykładu 2 możemy potwierdzić, że wartość głęboka = prawdziwa Po ustawieniu, nowo utworzona Ramka danych z istniejącego Ramka danych nie ma bezpośredniego związku i może wykonywać manipulację bez wpływu.

Przykład 3:

W tym przykładzie zamierzamy manipulować starą Ramka danych i sprawdź, czy wpłynie to DFCopy DataFrame albo nie. Tutaj używamy Deep = False, aby skopiować Ramka danych:

# Python Przykład_3.py
importować pandy jako PD
data = 'tv_show_name': [„The Walking Dead”, „Merlin”, „Little Evil”,
„Napad pieniądze”]],
„TV_Streaming_name”: [„Netflix”, „FX”, „Disney Plus”,
'Amazon Prime'],
„show_season”: [4, 10, 4, 5],
„Główny aktor”: [„Rick Grimes”, „Mordred”, „Karl C. Młynarz',
„Sergio Marquina”]
df = pd.Ramka danych.from_dict (dane)
print („oryginalna ramka danych”)
Drukuj (DF)
wydrukować('_________________________________________________________')
dfcopy = df.kopia (głęboka = false)
print („skopiowana rama danych”)
Drukuj (dfcopy)
wydrukować('_________________________________________________________')
# Teraz przeprowadzamy manipulację danymi w oryginalnej ramce danych
# Zmieniamy wartości kolumny ('tv_show_name') na a, b, c, d
# Teraz zobaczymy, że wpłynie to na DFCopy DataFrame
df ['tv_show_name'] = df ['tv_show_name'].Wymień ([„The Walking Dead”,
„Merlin”, „Little Evil”, „Money Heist”], [„A”, „B”, „C”, „D”])
#Now Drukowanie zarówno DFCopy (Deep = False), jak i DF (oryginalne) DataFrame
wydrukować('_________________________________________________________')
print („skopiowana rama danych”)
Drukuj (dfcopy)
print („oryginalna ramka danych”)
Drukuj (DF)

Linia od 1 do 18: Wyjaśnienia są już podane w programie przykładu 1. Jedna zmiana została dokonana w linii nr. 15. Teraz używamy głębokiego = false głębokie = true.

Linia 23: Wymieniamy oryginał DF (dataFrame) kolumna (['tv_show_name']) wartości do ['a', 'b', 'c', 'd']. Teraz sprawdzimy, czy ta manipulacja w oryginalnym DF (DataFrame) wpłynie na dfcopy (głębokie = false), czy nie. Jak już wiemy, istnieje bezpośredni związek między tym, kiedy używamy Deep = False.

Linia 27 do 30: Drukujemy oryginalny DF i kopiujemy (Ramka danych) Jak pokazano na powyższym wyjściu. Ze wyjścia możemy potwierdzić, że zmiany dokonane w oryginalnej ramce danych (DF) mają wpływ na kopię (DataFrame). Wartości kolumny ([„TV_Show_name”]) Zmień także kopię danych danych.

Wyjście:

Oryginalna ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Młynarz
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________
Skopiowana ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Młynarz
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________
_____________________________________________________
Skopiowana ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 Netflix 4 Rick Grimes
1 B Fx 10 Mordred
2 c Disney plus 4 karl c. Młynarz
3 D Amazon Prime 5 Sergio Marquina
Oryginalna ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 Netflix 4 Rick Grimes
1 B Fx 10 Mordred
2 c Disney plus 4 karl c. Młynarz
3 D Amazon Prime 5 Sergio Marquina

Przykład_4:

Skopiuj istniejący Ramka danych Korzystanie z operatora przypisania, który ma ten sam problem z bezpośrednimi relacjami, taki jak Deep = False:

# Python Przykład_4.py
importować pandy jako PD
data = 'tv_show_name': [„The Walking Dead”, „Merlin”, „Little Evil”,
„Napad pieniądze”]],
„TV_Streaming_name”: [„Netflix”, „FX”, „Disney Plus”,
'Amazon Prime'],
„show_season”: [4, 10, 4, 5],
„Główny aktor”: [„Rick Grimes”, „Mordred”, „Karl C. Młynarz',
„Sergio Marquina”]
df = pd.Ramka danych.from_dict (dane)
print („oryginalna ramka danych”)
Drukuj (DF)
wydrukować('_________________________________________________________')
dfcopy = df
print („skopiowana rama danych”)
Drukuj (dfcopy)
wydrukować('_________________________________________________________')
# Teraz przeprowadzamy manipulację danymi w oryginalnej ramce danych
# Zmieniamy wartości kolumny ('tv_show_name') na a, b, c, d
# Teraz zobaczymy, że wpłynie to na DFCopy DataFrame
df ['tv_show_name'] = df ['tv_show_name'].Wymień ([„The Walking Dead”,
„Merlin”, „Little Evil”, „Money Heist”], [„A”, „B”, „C”, „D”])
#Now Drukowanie zarówno DFCopy, jak i DF (oryginalne) DataFrame
wydrukować('_________________________________________________________')
print („skopiowana rama danych”)
Drukuj (dfcopy)
print („oryginalna ramka danych”)
Drukuj (DF)

Linia 15: W powyższym przykładzie programu 4 kierujemy Ramka danych do innej zmiennej bez użycia metody kopii (). Ale to także tworzy bezpośredni związek między oryginałem Ramka danych i skopiowani Ramka danych jak głęboka = fałsz. Poniższe dane wyjściowe pokazuje, że jeśli coś zmienimy w oryginale Ramka danych, wtedy wpłynie to również na skopiowane Ramka danych lub odwrotnie:

Wyjście:

Oryginalna ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Młynarz
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________
Skopiowana ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Młynarz
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________
_____________________________________________________
Skopiowana ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 Netflix 4 Rick Grimes
1 B Fx 10 Mordred
2 c Disney plus 4 karl c. Młynarz
3 D Amazon Prime 5 Sergio Marquina
Oryginalna ramka danych
TV_Show_name TV_Streaming_name Show_Sason Główny aktor
0 Netflix 4 Rick Grimes
1 B Fx 10 Mordred
2 c Disney plus 4 karl c. Młynarz
3 D Amazon Prime 5 Sergio Marquina

Wniosek:

W tym artykule widzieliśmy właściwy sposób kopiowania istniejącego Ramka danych, i to utworzy nowy obiekt z danymi i indeksami. Jak widzieliśmy, kiedy zachowujemy FALSE głęboką wartość, utworzy on odniesienie do danych i wskaźników do nowej kopii Ramka danych. Tak więc kopia za pomocą operatora przypisania również działa w ten sam sposób (głębokie = false), jak już widzieliśmy w tym artykule za pomocą przykładu.

Czasami potrzebujemy tylko niektórych kolumn do kopiowania z istniejącego Ramka danych, nie całość. Następnie możemy użyć następującej metody, która jest podobna do kopii (głęboko = true), ale z nazwą kolumn:

new_df = old_df [['a', 'b', 'c']].Kopiuj()

Bądź ostrożny. Jeśli masz tylko jedną kolumnę, musisz użyć nawiasów o podwójnej kwadratowej. W przeciwnym razie stworzy serię, a nie Ramka danych.

new_df = old_df [['a']].Kopiuj()

Kod tego artykułu jest dostępny pod linkiem GitHub:

https: // github.com/shekharpandey89/pandas-dataframe-copy-metod