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
Linda Hamiltonoriginal
2024-12-01 17:28:11505parcourir

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

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