Crea un nuovo telaio da dati da un frame dati esistente in Panda?

Crea un nuovo telaio da dati da un frame dati esistente in Panda?

A volte, dobbiamo copiare l'attuale DataFrame con dati e indici. Tuttavia, copiare il tutto DataFrame è anche un altro modo per esserci una relazione diretta creata tra il vecchio DataFrame e il nuovo DataFrame. Se apportiamo modifiche al vecchio DataFrame, influenzerà anche il nuovo DataFrame o vice versa.

In questo articolo, vedremo panda.DataFrame.Metodo Copy (), che è usato per Copy () DataFrame.

Se vogliamo creare un nuovo DataFrame da un esistente DataFrame, Quindi possiamo usare il metodo Copy (). Quindi, in questo articolo, vedremo come possiamo usare il Pandas DataFrame.copia() metodo per crearne un altro DataFrame da un esistente DataFrame.

La sintassi è riportata di seguito:

DataFrame.copia (deep = true)

Nella sintassi sopra, possiamo vedere che c'è profondo falso e vero.

Questi due valori sono molto importanti per usare il Metodo Copy (). Vediamo nei dettagli su questi due valori.

Profondo (vero): Ogni volta che usiamo il Metodo Copy (), il profondo è vero per impostazione predefinita. Questo vero valore indica che dobbiamo copiare tutti i dati e gli indici dall'esistenza DataFrame e crea un nuovo oggetto. Supponiamo di fare qualsiasi manipolazione per il nuovo DataFrame, non influenzerà il vecchio DataFrame o viceversa, il che significa che non ci sarà alcuna connessione di relazione tra il vecchio e il nuovo DataFrame, Ed entrambi possono funzionare in modo indipendente.

Profondo (falso): Quando manteniamo il valore del falso profondo, allora la copia () crea un nuovo oggetto senza i dati e l'indice. Creerà un riferimento ai dati e all'indice del telaio dati originale. Se una manipolazione del telaio dati originale, influirà inoltre per la copia superficiale o viceversa.

Esempio 1:

Copia il frame dati usando deep = true:

# Python Esempio_1.Py
Importa panda come PD
Data = 'TV_Show_Name': ['The Walking Dead', 'Merlin', 'Little Evil',
"Rapina di denaro"],
'TV_Streaming_name': ['Netflix', 'FX', 'Disney Plus',
'Amazon Prime'],
'show_season': [4, 10, 4, 5],
"Attore principale": ['Rick Grimes', 'Mordred', 'Karl C. Mugnaio',
'Sergio Marquina']
df = pd.DataFrame.da_dict (dati)
print ("dati dati originale")
Stampa (DF)
stampa('_________________________________________________________')
dfcopy = df.copia()
print ('copied dataframe')
Stampa (dfcopy)

Linea 2: Importiamo i panda della biblioteca come PD. Qui, PD significa che stiamo importando la libreria Pandas con il nuovo nome dello spazio dei nomi chiamato PD. Possiamo usare il PD invece di usare il nome completo dei panda.

Riga da 3 a 10: Abbiamo creato un detto con alcune chiavi e valori, in cui i valori sono nell'elenco. Dopo aver creato il dizionario, convertiamo quel dict in a DataFrame (DF) usando il DataFrame.da_dict () metodo.

Riga da 11 a 12: Stiamo stampando il nostro dataframe (DF), che mostra nell'output di seguito.

Riga 14: Stiamo creando una copia del DF (DataFrame) dall'esistenza DF (DataFrame). Qui, non stiamo usando alcun profondo = vero perché è per impostazione predefinita. E, come mostrato in Deep = True, creerà un nuovo oggetto con tutti i dati e gli indici dell'esistenza DataFrame, e non ci sarà alcuna relazione diretta tra la copia DataFrame e il vecchio DataFrame.

Riga da 15 a 16: Stiamo stampando il nostro copiato DataFrame (dfcopy), e l'output è mostrato di seguito:

Produzione:

Frame di dati originale
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Mugnaio
3 monete Heist Amazon Prime 5 Sergio Marquina
_________________________________________________________
Copied DataFrame
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Mugnaio
3 monete Heist Amazon Prime 5 Sergio Marquina
Processo finito con il codice di uscita 0

Esempio 2:

In questo esempio, manipoleremo il vecchio DataFrame e controlla se influirà su Dfcopy DataFrame o no. Qui, stiamo usando il profondo = vero per copiare il frame dati:

# Python Esempio_2.Py
Importa panda come PD
Data = 'TV_Show_Name': ['The Walking Dead', 'Merlin', 'Little Evil',
"Rapina di denaro"],
'TV_Streaming_name': ['Netflix', 'FX', 'Disney Plus',
'Amazon Prime'],
'show_season': [4, 10, 4, 5],
"Attore principale": ['Rick Grimes', 'Mordred', 'Karl C. Mugnaio',
'Sergio Marquina']
df = pd.DataFrame.da_dict (dati)
print ("dati dati originale")
Stampa (DF)
stampa('_________________________________________________________')
dfcopy = df.copia()
print ('copied dataframe')
Stampa (dfcopy)
stampa('_________________________________________________________')
Print ("************ Manipolazione eseguita nell'originale Df *************")
# Ora, stiamo eseguendo la manipolazione dei dati nel frame dati originale
# Stiamo cambiando i valori della colonna ('TV_SHOW_NAME') in A, B, C, D
# Ora, vedremo che questo influenzerà o no al frame dati DFCopy
df ['tv_show_name'] = df ['tv_show_name'].Sostituisci (["The Walking Dead",
'Merlin', 'Little Evil', 'Money Heist'], ['A', 'B', 'C', 'D'])
#Now Stampa sia DFCopy (Deep = True) che DF (originale) DataFrame
print ("dati dati originale")
Stampa (DF)
print ('copied dataframe')
Stampa (dfcopy)

Riga da 1 a 18: Le spiegazioni sono già riportate nel programma precedente nell'esempio 1.

Riga 23: Sostituiamo l'originale df (dataframe) colonna (['tv_show_name']) valori in ['a', 'b', 'c', 'd']. Ora, verificheremo se questa manipolazione nel DF originale (DataFrame) influenzerà o no. Come già sappiamo, non esiste una relazione diretta tra quando usiamo il profondo = vero.

Riga 27-30: Stampiamo l'originale DF e copia (DataFrame) come mostrato nell'output di seguito. Dall'output, possiamo confermare che le modifiche apportate nel Frame Data Original (DF) non hanno alcun effetto sulla copia (DataFrame):

Produzione:

Frame di dati originale
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Mugnaio
3 monete Heist Amazon Prime 5 Sergio Marquina
_________________________________________________________
Copied DataFrame
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Mugnaio
3 monete Heist Amazon Prime 5 Sergio Marquina
_________________________________________________________
************ Manipolazione eseguita nel df originale *************
Frame di dati originale
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 A Netflix 4 Rick Grimes
1 b fx 10 Mordred
2 C Disney Plus 4 Karl C. Mugnaio
3 d Amazon Prime 5 Sergio Marquina
Copied DataFrame
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Mugnaio
3 monete Heist Amazon Prime 5 Sergio Marquina

Dall'esempio sopra 2, possiamo confermare quel valore profondo = vero quando impostato, il nuovo creato DataFrame dall'esistenza DataFrame non ha una relazione diretta e può eseguire la manipolazione senza influenzarsi a vicenda.

Esempio 3:

In questo esempio, manipoleremo il vecchio DataFrame e controlla se influirà su Dfcopy DataFrame o no. Qui, stiamo usando il profondo = falso per copiare il DataFrame:

# Python Esempio_3.Py
Importa panda come PD
Data = 'TV_Show_Name': ['The Walking Dead', 'Merlin', 'Little Evil',
"Rapina di denaro"],
'TV_Streaming_name': ['Netflix', 'FX', 'Disney Plus',
'Amazon Prime'],
'show_season': [4, 10, 4, 5],
"Attore principale": ['Rick Grimes', 'Mordred', 'Karl C. Mugnaio',
'Sergio Marquina']
df = pd.DataFrame.da_dict (dati)
print ("dati dati originale")
Stampa (DF)
stampa('_________________________________________________________')
dfcopy = df.copia (deep = false)
print ('copied dataframe')
Stampa (dfcopy)
stampa('_________________________________________________________')
# Ora, stiamo eseguendo la manipolazione dei dati nel frame dati originale
# Stiamo cambiando i valori della colonna ('TV_SHOW_NAME') in A, B, C, D
# Ora, vedremo che questo influenzerà o no al frame dati DFCopy
df ['tv_show_name'] = df ['tv_show_name'].Sostituisci (["The Walking Dead",
'Merlin', 'Little Evil', 'Money Heist'], ['A', 'B', 'C', 'D'])
#Now Printing sia DFCopy (Deep = False) che DF (originale) DataFrame
stampa('_________________________________________________________')
print ('copied dataframe')
Stampa (dfcopy)
print ("dati dati originale")
Stampa (DF)

Riga da 1 a 18: Le spiegazioni sono già riportate nel programma dell'esempio 1. L'unica modifica è stata eseguita alla riga no. 15. Ora stiamo usando il profondo = falso invece profondo = vero.

Riga 23: Sostituiamo l'originale df (dataframe) colonna (['tv_show_name']) valori in ['a', 'b', 'c', 'd']. Ora, verificheremo se questa manipolazione nel DF originale (DataFrame) influenzerà o no. Come già sappiamo, c'è una relazione diretta tra quando usiamo il profondo = falso.

Riga 27-30: Stampiamo DF e copia originali (DataFrame) come mostrato nell'output di seguito. Dall'output, possiamo confermare che le modifiche apportate nel Frame Data Original (DF) hanno un effetto sulla copia (DataFrame). I valori della colonna (['TV_SHOW_NAME']) Modifica anche nel frame dati di copia.

Produzione:

Frame di dati originale
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Mugnaio
3 monete Heist Amazon Prime 5 Sergio Marquina
_________________________________________________________
Copied DataFrame
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Mugnaio
3 monete Heist Amazon Prime 5 Sergio Marquina
_________________________________________________________
_________________________________________________________
Copied DataFrame
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 A Netflix 4 Rick Grimes
1 b fx 10 Mordred
2 C Disney Plus 4 Karl C. Mugnaio
3 d Amazon Prime 5 Sergio Marquina
Frame di dati originale
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 A Netflix 4 Rick Grimes
1 b fx 10 Mordred
2 C Disney Plus 4 Karl C. Mugnaio
3 d Amazon Prime 5 Sergio Marquina

Esempio_4:

Copia l'esistenza DataFrame Utilizzo dell'operatore di assegnazione, che ha lo stesso problema di relazione diretta come profondo = falso:

# Python Esempio_4.Py
Importa panda come PD
Data = 'TV_Show_Name': ['The Walking Dead', 'Merlin', 'Little Evil',
"Rapina di denaro"],
'TV_Streaming_name': ['Netflix', 'FX', 'Disney Plus',
'Amazon Prime'],
'show_season': [4, 10, 4, 5],
"Attore principale": ['Rick Grimes', 'Mordred', 'Karl C. Mugnaio',
'Sergio Marquina']
df = pd.DataFrame.da_dict (dati)
print ("dati dati originale")
Stampa (DF)
stampa('_________________________________________________________')
dfcopy = df
print ('copied dataframe')
Stampa (dfcopy)
stampa('_________________________________________________________')
# Ora, stiamo eseguendo la manipolazione dei dati nel frame dati originale
# Stiamo cambiando i valori della colonna ('TV_SHOW_NAME') in A, B, C, D
# Ora, vedremo che questo influenzerà o no al frame dati DFCopy
df ['tv_show_name'] = df ['tv_show_name'].Sostituisci (["The Walking Dead",
'Merlin', 'Little Evil', 'Money Heist'], ['A', 'B', 'C', 'D'])
#Now Stampa sia DFCopy che DF (originale) DataFrame
stampa('_________________________________________________________')
print ('copied dataframe')
Stampa (dfcopy)
print ("dati dati originale")
Stampa (DF)

Riga 15: Nell'esempio del programma sopra sopra, dirigiamo il DataFrame a un'altra variabile senza usare il metodo COPY (). Ma questo crea anche una relazione diretta tra l'originale DataFrame e il copiato DataFrame come il profondo = falso. Il seguente output mostra che se cambiamo qualcosa nell'originale DataFrame, quindi influenzerà anche il copiato DataFrame o vice versa:

Produzione:

Frame di dati originale
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Mugnaio
3 monete Heist Amazon Prime 5 Sergio Marquina
_________________________________________________________
Copied DataFrame
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney Plus 4 Karl C. Mugnaio
3 monete Heist Amazon Prime 5 Sergio Marquina
_________________________________________________________
_________________________________________________________
Copied DataFrame
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 A Netflix 4 Rick Grimes
1 b fx 10 Mordred
2 C Disney Plus 4 Karl C. Mugnaio
3 d Amazon Prime 5 Sergio Marquina
Frame di dati originale
TV_SHOW_NAME TV_Streaming_Name Show_Season Actor
0 A Netflix 4 Rick Grimes
1 b fx 10 Mordred
2 C Disney Plus 4 Karl C. Mugnaio
3 d Amazon Prime 5 Sergio Marquina

Conclusione:

In questo articolo, abbiamo visto il modo corretto di copiare l'esistenza DataFrame, e farlo creerà un nuovo oggetto con dati e indici. Come abbiamo visto, quando manteniamo falso il valore profondo, creerà un riferimento ai dati e agli indici alla nuova copia DataFrame. Quindi, copia usando l'operatore di assegnazione funziona anche allo stesso modo (profondo = falso), come abbiamo già visto in questo articolo con l'aiuto di un esempio.

A volte abbiamo bisogno di solo alcune delle colonne da copiare dall'esistenza DataFrame, non il tutto. Quindi possiamo usare il seguente metodo, che è simile alla copia (Deep = true) ma con il nome delle colonne:

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

Stai attento. Se hai una sola colonna, devi usare le parentesi a doppio quadrato. Altrimenti, creerà una serie, non a DataFrame.

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

Il codice per questo articolo è disponibile sul collegamento GitHub:

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