Maison > développement back-end > Tutoriel Python > Pourquoi le remplacement des valeurs DataFrame en fonction d'une condition ne fonctionne-t-il pas directement et comment puis-je y remédier ?

Pourquoi le remplacement des valeurs DataFrame en fonction d'une condition ne fonctionne-t-il pas directement et comment puis-je y remédier ?

Linda Hamilton
Libérer: 2024-12-21 00:25:10
original
235 Les gens l'ont consulté

Why Doesn't Replacing DataFrame Values Based on a Condition Work Directly, and How Can I Fix It?

Remplacement des valeurs DataFrame à l'aide de la logique conditionnelle

Dans Pandas, la manipulation du DataFrame est un aspect crucial. Une opération courante consiste à remplacer les valeurs en fonction de conditions spécifiques. Considérez le scénario suivant :

Question :

Je souhaite remplacer les valeurs d'une colonne DataFrame qui dépassent un seuil par zéro. J'ai tenté d'y parvenir en utilisant :

df[df.my_channel > 20000].my_channel = 0
Copier après la connexion

Cependant, cela semble fonctionner uniquement lors de la copie du canal dans un nouveau DataFrame. Pourquoi cela ne fonctionne-t-il pas avec le DataFrame d'origine ?

Réponse :

Le problème est lié à l'indexeur utilisé. Avant la version 0.20.0 de Pandas, l'indexeur .ix était couramment utilisé. Cependant, il est depuis obsolète. Utilisez plutôt les indexeurs .loc ou .iloc.

Pour résoudre votre problème, vous pouvez utiliser le code suivant :

mask = df.my_channel > 20000
column_name = 'my_channel'
df.loc[mask, column_name] = 0
Copier après la connexion

Ce code effectue les actions suivantes :

  1. le masque sélectionne les lignes où df.my_channel > 20000 est True.
  2. df.loc[mask, column_name] = 0 définit les lignes sélectionnées dans la colonne column_name sur 0.

Vous pouvez également utiliser une seule ligne :

df.loc[df.my_channel > 20000, 'my_channel'] = 0
Copier après la connexion

Notez que dans ce cas, il est recommandé d'utiliser .loc plutôt que .iloc car ce dernier peut entraîner dans une NotImplementedError.

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!

source:php.cn
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