Maison > développement back-end > Tutoriel Python > 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
Libérer: 2024-11-05 00:12:02
original
767 Les gens l'ont consulté

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>
    Copier après la connexion

    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>
    Copier après la connexion

    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>
    Copier après la connexion

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>
Copier après la connexion

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 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