Maison > développement back-end > Tutoriel Python > Pourquoi les modifications Pandas DataFrame affectent-elles parfois le DataFrame d'origine ?

Pourquoi les modifications Pandas DataFrame affectent-elles parfois le DataFrame d'origine ?

Linda Hamilton
Libérer: 2024-11-08 03:21:01
original
604 Les gens l'ont consulté

Why do Pandas DataFrame modifications sometimes affect the original DataFrame?

Comprendre la nécessité de copier des DataFrame dans Pandas

Lorsque vous travaillez avec des dataframes Pandas, le choix de créer ou non une copie d'un le dataframe peut avoir des implications importantes. Par défaut, l'indexation d'une trame de données renvoie une référence à la structure de données d'origine. Par conséquent, toute modification apportée au sous-ensemble modifiera directement le cadre parent.

Pour illustrer ce comportement, considérons l'exemple suivant :

df = pd.DataFrame({'x': [1, 2]})
df_sub = df[0:1]
df_sub.x = -1
print(df)
Copier après la connexion

Sortie :

   x
0 -1
1  2
Copier après la connexion

Comme vous pouvez le constater, la modification des valeurs du sous-ensemble modifie directement les valeurs correspondantes dans le dataframe d'origine.

Dans les situations où il est essentiel de protéger le dataframe d'origine des modifications, la copie est nécessaire. Ceci peut être réalisé en utilisant la méthode .copy(). Voici un exemple :

df_sub_copy = df[0:1].copy()
df_sub_copy.x = -1
print(df)
Copier après la connexion

Sortie :

   x
0  1
1  2
Copier après la connexion

Dans ce cas, .copy() garantit que toute modification apportée à df_sub_copy n'affectera pas le df d'origine.

Il est crucial de comprendre que ce comportement s'applique uniquement aux copies complètes, ce qui signifie que l'intégralité des données référencées est copiée dans le nouvel objet. En revanche, une copie superficielle crée un nouvel objet qui fait référence aux mêmes données sous-jacentes que l'original. Par conséquent, toute modification apportée à une copie superficielle affectera également la trame de données d'origine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal