Maison  >  Article  >  développement back-end  >  Pandas : Quand la sélection à partir d'un DataFrame crée-t-elle une vue ou une copie ?

Pandas : Quand la sélection à partir d'un DataFrame crée-t-elle une vue ou une copie ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-05 00:12:02610parcourir

Pandas: When Does Selecting from a DataFrame Create a View vs. a Copy?

Pandas : Comprendre les règles de génération de vues et de copies

Confusion dans l'identification des vues et des copies

Déterminer si une sélection dans un Pandas DataFrame aboutit à une vue ou à une copie peut être déroutant. Cette confusion provient principalement de la variété des opérations d'indexation et de leurs comportements variables.

Règles générales

  • Toutes les opérations DataFrame créent par nature des copies.
  • L'option inplace=True, lorsqu'elle est disponible, permet une modification sur place.
  • Indexeurs qui définissent des valeurs (par exemple, .loc, .iloc, .iat, .at) effectuent généralement des opérations sur place.
  • Obtenir des valeurs à partir d'un seul objet de type de données à l'aide d'un indexeur aboutit souvent à une vue (bien que la disposition de la mémoire puisse affecter this).
  • Obtenir des valeurs à partir d'un objet de type de données multiples à l'aide d'un indexeur produit toujours un copie.

Exemples spécifiques

  • Attribuer des valeurs à une comparaison :

    <code class="python">df[df.C <= df.B] = 7654321</code>

    Cette affectation modifie le DataFrame df d'origine car l'indexeur .loc est utilisé pour définir les valeurs sur place.

  • Indexation chaînée :

    <code class="python">df[df.C <= df.B].loc[:, 'B':'E']</code>

    Cette opération est déconseillée car elle peut ne pas être fiable. Pour éviter des problèmes potentiels, utilisez plutôt la syntaxe suivante :

    <code class="python">df.loc[df.C <= df.B, 'B':'E']</code>

Modification des valeurs en fonction d'une requête

Pour modifier toutes les valeurs d'un DataFrame qui répond à une condition de requête spécifique, utilisez l'indexeur loc avec la condition de requête comme argument. Par exemple :

<code class="python">df.loc[df.C <= df.B, 'E'] = 40</code>

Cette affectation modifiera uniquement les valeurs de la colonne « E » pour les lignes où df.C est inférieur ou égal à df.B.

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