Maison > développement back-end > Tutoriel Python > Comment définir efficacement une valeur de cellule spécifique dans un DataFrame Pandas ?

Comment définir efficacement une valeur de cellule spécifique dans un DataFrame Pandas ?

Linda Hamilton
Libérer: 2024-12-01 17:28:11
original
476 Les gens l'ont consulté

How to Efficiently Set a Specific Cell Value in a Pandas DataFrame?

Définir la valeur d'une cellule spécifique dans un DataFrame Pandas

Vous avez créé un DataFrame et souhaitez modifier la valeur d'une cellule particulière . Cependant, l'utilisation de df.xs('C')['x'] = 10 ne met pas à jour le DataFrame comme prévu. Pourquoi ?

Le problème vient du fonctionnement de df.xs(). Par défaut, il renvoie un nouveau DataFrame avec une copie des données. Ainsi, df.xs('C')['x'] = 10 modifie uniquement le nouveau DataFrame, pas l'original.

À la place, vous pouvez utiliser df['x']['C'] = 10. Cette méthode renvoie une vue du DataFrame d'origine et toutes les modifications seront appliquées à df.

Cependant, l'approche recommandée utilise .at ou .iat :

  • df.at['C', 'x'] = 10 : définit directement la valeur à la ligne 'C' et à la colonne 'x'.
  • df. iat[2, 0] = 10 : accède à la cellule en utilisant sa position d'index (2 pour la ligne, 0 pour colonne).

Pourquoi df.xs('C')['x'] = 10 est-il obsolète ?

df.set_value('C' , 'x', 10) est la méthode préférée car elle est nettement plus rapide. Cependant, df.set_value() devrait être obsolète.

Comparaison des performances

Les benchmarks montrent que df.set_value() surpasse les autres options en termes de vitesse :

In [18]: %timeit df.set_value('C', 'x', 10)
100000 loops, best of 3: 2.9 µs per loop

In [20]: %timeit df['x']['C'] = 10
100000 loops, best of 3: 6.31 µs per loop

In [81]: %timeit df.at['C', 'x'] = 10
100000 loops, best of 3: 9.2 µs per loop
Copier après la connexion

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