Maison  >  Article  >  développement back-end  >  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
Linda Hamiltonoriginal
2024-11-08 03:21:01562parcourir

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)

Sortie :

   x
0 -1
1  2

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)

Sortie :

   x
0  1
1  2

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!

Déclaration:
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