Créez un nouveau DataFrame à partir d'un DataFrame existant dans Pandas?

Créez un nouveau DataFrame à partir d'un DataFrame existant dans Pandas?

Parfois, nous devons copier le Trame de données avec des données et des indices. Cependant, copiant l'ensemble Trame de données est également une autre façon pour qu'il y ait une relation directe créée entre l'ancien Trame de données Et le nouveau Trame de données. Si nous apportons des modifications dans l'ancien Trame de données, cela affectera également le nouveau Trame de données ou vice versa.

Dans cet article, nous allons voir pandas.Trame de données.Méthode Copy (), qui est utilisé pour copy () dataframe.

Si nous voulons créer un nouveau Trame de données à partir d'un existant Trame de données, Ensuite, nous pouvons utiliser la méthode Copy (). Donc, dans cet article, nous allons voir comment nous pouvons utiliser le Pandas dataframe.copie() Méthode pour créer un autre Trame de données à partir d'un existant Trame de données.

La syntaxe est donnée ci-dessous:

Trame de données.copier (Deep = true)

Dans la syntaxe ci-dessus, nous pouvons voir qu'il y a profondément FAUX et VRAI.

Ces deux valeurs sont très importantes pour utiliser le Méthode Copy (). Voyons dans les détails de ces deux valeurs.

Deep (vrai): Chaque fois que nous utilisons le Méthode Copy (), le profond est vrai par défaut. Cette vraie valeur indique que nous devons copier toutes les données et indices Trame de données et créer un nouvel objet. Supposons que nous faisons toute manipulation au nouveau Trame de données, cela n'affectera pas l'ancien DataFrame ou vice-versa, ce qui signifie qu'il n'y aura pas de lien relationnel entre l'ancien et le nouveau Trame de données, Et les deux peuvent fonctionner de manière indépendante.

Deep (faux): Lorsque nous gardons la valeur du False Deep, alors la copie () crée un nouvel objet sans données et index. Il créera une référence aux données et à l'index de l'original DataFrame. Si une manipulation de l'original DataFrame, cela affectera également la copie peu profonde DataFrame ou vice-versa.

Exemple 1:

Copiez le dataframe à l'aide du deep = true:

# Python Exemple_1.py
Importer des pandas en tant que PD
data = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
«Breas d'argent»],
'Tv_streaming_name': ['netflix', 'fx', 'Disney Plus',
'Amazon Prime'],
'show_serason': [4, 10, 4, 5],
«Acteur principal»: [«Rick Grimes», «Mordred», «Karl C. Meunier',
'Sergio Marquina']
df = pd.Trame de données.From_dict (données)
Imprimer ('Original DataFrame')
Imprimer (DF)
imprimer('_________________________________________________________')
dfcopy = df.copie()
print («copié dataframe»)
imprimer (dfcopy)

Ligne 2: Nous importons les pandas de la bibliothèque en tant que PD. Ici, PD signifie que nous importons la bibliothèque Pandas avec le nouveau nom de l'espace de noms appelé PD. Nous pouvons utiliser le PD au lieu d'utiliser le nom complet Pandas.

Ligne 3 à 10: Nous avons créé un dict avec certaines clés et valeurs, dans lesquelles les valeurs sont dans la liste. Après avoir créé le dictionnaire, nous convertissons ce dict DataFrame (DF) en utilisant le Trame de données.from_dict () méthode.

Ligne 11 à 12: Nous imprimons notre DataFrame (DF), qui montre dans la sortie ci-dessous.

Ligne 14: Nous créons une copie du df (dataframe) de l'existant df (dataframe). Ici, nous n'utilisons aucun deep = true car c'est par défaut. Et, comme indiqué dans Deep = true, il créera un nouvel objet avec toutes les données et indices de l'existant Trame de données, Et il n'y aura pas de relation directe entre la copie Trame de données Et l'ancien Trame de données.

Ligne 15 à 16: Nous imprimons notre copié DataFrame (DFCOPY), et la sortie est indiquée ci-dessous:

Sortir:

DataFrame original
Tv_show_name tv_streaming_name show_season acteur principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney plus 4 Karl C. Meunier
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________________
Copied DataFrame
Tv_show_name tv_streaming_name show_season acteur principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney plus 4 Karl C. Meunier
3 Money Heist Amazon Prime 5 Sergio Marquina
Processus terminé avec le code de sortie 0

Exemple 2:

Dans cet exemple, nous allons manipuler l'ancien Trame de données et vérifier si cela affectera le dfcopy dataframe ou non. Ici, nous utilisons le deep = true pour copier le dataframe:

# Python Exemple_2.py
Importer des pandas en tant que PD
data = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
«Breas d'argent»],
'Tv_streaming_name': ['netflix', 'fx', 'Disney Plus',
'Amazon Prime'],
'show_serason': [4, 10, 4, 5],
«Acteur principal»: [«Rick Grimes», «Mordred», «Karl C. Meunier',
'Sergio Marquina']
df = pd.Trame de données.From_dict (données)
Imprimer ('Original DataFrame')
Imprimer (DF)
imprimer('_________________________________________________________')
dfcopy = df.copie()
print («copié dataframe»)
imprimer (dfcopy)
imprimer('_________________________________________________________')
Print ("************ Manipulation faite dans le DF original ***************")
# Maintenant, nous faisons une manipulation de données dans le DataFrame d'origine
# nous modifions les valeurs de la colonne ('tv_show_name') en a, b, c, d
# Maintenant, nous verrons que cela affectera le dfcopy dataframe ou non
df ['tv_show_name'] = df ['tv_show_name'].remplacer ([«The Walking Dead»,
«Merlin», «Little Evil», «Money Heist»], [«A», «B», «C», «D»])
#Now Impression à la fois dfcopy (Deep = true) et df (original) dataframe
Imprimer ('Original DataFrame')
Imprimer (DF)
print («copié dataframe»)
imprimer (dfcopy)

Ligne 1 à 18: Des explications sont déjà données dans le programme précédent dans l'exemple 1.

Ligne 23: Nous remplaçons l'original df (dataframe) colonne ([tv_show_name ']) valeurs dans [' a ',' b ',' c ',' d ']. Maintenant, nous vérifierons si cette manipulation dans le DF d'origine (DataFrame) affectera le DFCOPY (Deep = True) ou non. Comme nous le savons déjà, il n'y a pas de relation directe entre lorsque nous utilisons le deep = true.

Ligne 27 à 30: Nous imprimons l'original df et copie (dataframe) Comme indiqué dans la sortie ci-dessous. À partir de la sortie, nous pouvons confirmer que les modifications effectuées dans le DataFrame (DF) d'origine n'ont aucun effet sur la copie (DataFrame):

Sortir:

DataFrame original
Tv_show_name tv_streaming_name show_season acteur principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney plus 4 Karl C. Meunier
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________________
Copied DataFrame
Tv_show_name tv_streaming_name show_season acteur principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney plus 4 Karl C. Meunier
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________________
************ Manipulation faite dans le DF original *************
DataFrame original
Tv_show_name tv_streaming_name show_season acteur principal
0 A Netflix 4 Rick Grimes
1 b fx 10 mordred
2 C Disney plus 4 Karl C. Meunier
3 D Amazon Prime 5 Sergio Marquina
Copied DataFrame
Tv_show_name tv_streaming_name show_season acteur principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney plus 4 Karl C. Meunier
3 Money Heist Amazon Prime 5 Sergio Marquina

D'après l'exemple ci-dessus 2, nous pouvons confirmer que Deep = Vrai Value Lorsqu'il est défini, le nouvellement créé Trame de données de l'existant Trame de données n'a pas de relation directe et peut effectuer une manipulation sans s'infiltrer.

Exemple 3:

Dans cet exemple, nous allons manipuler l'ancien Trame de données et vérifier si cela affectera le dfcopy dataframe ou non. Ici, nous utilisons le deep = false pour copier le Trame de données:

# Python Exemple_3.py
Importer des pandas en tant que PD
data = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
«Breas d'argent»],
'Tv_streaming_name': ['netflix', 'fx', 'Disney Plus',
'Amazon Prime'],
'show_serason': [4, 10, 4, 5],
«Acteur principal»: [«Rick Grimes», «Mordred», «Karl C. Meunier',
'Sergio Marquina']
df = pd.Trame de données.From_dict (données)
Imprimer ('Original DataFrame')
Imprimer (DF)
imprimer('_________________________________________________________')
dfcopy = df.copier (deep = false)
print («copié dataframe»)
imprimer (dfcopy)
imprimer('_________________________________________________________')
# Maintenant, nous faisons une manipulation de données dans le DataFrame d'origine
# nous modifions les valeurs de la colonne ('tv_show_name') en a, b, c, d
# Maintenant, nous verrons que cela affectera le dfcopy dataframe ou non
df ['tv_show_name'] = df ['tv_show_name'].remplacer ([«The Walking Dead»,
«Merlin», «Little Evil», «Money Heist»], [«A», «B», «C», «D»])
#Now Imprimer à la fois DFCOPY (Deep = False) et DF (Original) DataFrame
imprimer('_________________________________________________________')
print («copié dataframe»)
imprimer (dfcopy)
Imprimer ('Original DataFrame')
Imprimer (DF)

Ligne 1 à 18: Des explications sont déjà données dans le programme de l'exemple 1. Le seul changement a été effectué à la ligne no. 15. Maintenant, nous utilisons le deep = false à la place Deep = True.

Ligne 23: Nous remplaçons l'original df (dataframe) colonne ([tv_show_name ']) valeurs dans [' a ',' b ',' c ',' d ']. Maintenant, nous vérifierons si cette manipulation dans le DF d'origine (DataFrame) affectera la DFCopy (Deep = False) ou non. Comme nous le savons déjà, il existe une relation directe entre lorsque nous utilisons le deep = false.

Ligne 27 à 30: Nous imprimons le DF et la copie d'origine (Trame de données) comme indiqué dans la sortie ci-dessous. À partir de la sortie, nous pouvons confirmer que les modifications effectuées dans le DataFrame (DF) d'origine ont un effet sur la copie (DataFrame). Les valeurs de la colonne (['Tv_show_name']) Modifiez également dans la copie DataFrame.

Sortir:

DataFrame original
Tv_show_name tv_streaming_name show_season acteur principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney plus 4 Karl C. Meunier
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________________
Copied DataFrame
Tv_show_name tv_streaming_name show_season acteur principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney plus 4 Karl C. Meunier
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________________
_____________________________________________________________
Copied DataFrame
Tv_show_name tv_streaming_name show_season acteur principal
0 A Netflix 4 Rick Grimes
1 b fx 10 mordred
2 C Disney plus 4 Karl C. Meunier
3 D Amazon Prime 5 Sergio Marquina
DataFrame original
Tv_show_name tv_streaming_name show_season acteur principal
0 A Netflix 4 Rick Grimes
1 b fx 10 mordred
2 C Disney plus 4 Karl C. Meunier
3 D Amazon Prime 5 Sergio Marquina

Exemple_4:

Copiez l'existant Trame de données Utilisation de l'opérateur d'affectation, qui a le même problème de relation directe comme Deep = faux:

# Python Exemple_4.py
Importer des pandas en tant que PD
data = 'tv_show_name': ['The Walking Dead', 'Merlin', 'Little Evil',
«Breas d'argent»],
'Tv_streaming_name': ['netflix', 'fx', 'Disney Plus',
'Amazon Prime'],
'show_serason': [4, 10, 4, 5],
«Acteur principal»: [«Rick Grimes», «Mordred», «Karl C. Meunier',
'Sergio Marquina']
df = pd.Trame de données.From_dict (données)
Imprimer ('Original DataFrame')
Imprimer (DF)
imprimer('_________________________________________________________')
dfcopy = df
print («copié dataframe»)
imprimer (dfcopy)
imprimer('_________________________________________________________')
# Maintenant, nous faisons une manipulation de données dans le DataFrame d'origine
# nous modifions les valeurs de la colonne ('tv_show_name') en a, b, c, d
# Maintenant, nous verrons que cela affectera le dfcopy dataframe ou non
df ['tv_show_name'] = df ['tv_show_name'].remplacer ([«The Walking Dead»,
«Merlin», «Little Evil», «Money Heist»], [«A», «B», «C», «D»])
#Now Impression à la fois DFCOPY et DF (original) DataFrame
imprimer('_________________________________________________________')
print («copié dataframe»)
imprimer (dfcopy)
Imprimer ('Original DataFrame')
Imprimer (DF)

Ligne 15: Dans l'exemple de programme ci-dessus 4, nous dirigeons le Trame de données à une autre variable sans utiliser la méthode Copy (). Mais cela crée également une relation directe entre l'original Trame de données Et le copié Trame de données Comme le deep = faux. La sortie suivante montre que si nous changeons quelque chose dans l'original Trame de données, alors cela affectera également le copié Trame de données ou vice versa:

Sortir:

DataFrame original
Tv_show_name tv_streaming_name show_season acteur principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney plus 4 Karl C. Meunier
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________________
Copied DataFrame
Tv_show_name tv_streaming_name show_season acteur principal
0 The Walking Dead Netflix 4 Rick Grimes
1 Merlin FX 10 Mordred
2 Little Evil Disney plus 4 Karl C. Meunier
3 Money Heist Amazon Prime 5 Sergio Marquina
_____________________________________________________________
_____________________________________________________________
Copied DataFrame
Tv_show_name tv_streaming_name show_season acteur principal
0 A Netflix 4 Rick Grimes
1 b fx 10 mordred
2 C Disney plus 4 Karl C. Meunier
3 D Amazon Prime 5 Sergio Marquina
DataFrame original
Tv_show_name tv_streaming_name show_season acteur principal
0 A Netflix 4 Rick Grimes
1 b fx 10 mordred
2 C Disney plus 4 Karl C. Meunier
3 D Amazon Prime 5 Sergio Marquina

Conclusion:

Dans cet article, nous avons vu la bonne façon de copier le Trame de données, Et cela créera un nouvel objet avec des données et des indices. Comme nous l'avons vu, lorsque nous gardons la valeur profonde fausse, elle créera une référence aux données et aux indices à la nouvelle copie Trame de données. Ainsi, la copie à l'aide de l'opérateur d'affectation fonctionne également de la même manière (Deep = False), comme nous l'avons déjà vu dans cet article à l'aide d'un exemple.

Parfois, nous n'avons besoin que de certaines des colonnes pour copier à partir de l'existant Trame de données, pas le tout. Ensuite, nous pouvons utiliser la méthode suivante, qui est similaire à la copie (Deep = true) mais avec le nom des colonnes:

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

Faire attention. Si vous n'avez qu'une seule colonne, vous devez utiliser des supports à double carré. Sinon, il créera une série, pas un Trame de données.

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

Le code de cet article est disponible sur le lien GitHub:

https: // github.com / shekharpandey89 / pandas-dataframe-copythod