Maison >développement back-end >Tutoriel Python >Comment remplacer efficacement les valeurs Pandas DataFrame dépassant un seuil par zéro ?

Comment remplacer efficacement les valeurs Pandas DataFrame dépassant un seuil par zéro ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-17 00:21:25701parcourir

How to Efficiently Replace Pandas DataFrame Values Exceeding a Threshold with Zero?

Remplacement conditionnel Pandas

Lors de la manipulation d'un DataFrame, vous pouvez rencontrer le besoin de remplacer des valeurs répondant à certains critères. Cette question vise à expliquer comment remplacer les valeurs dépassant un seuil par zéro dans une colonne spécifique.

Approche originale et limites

L'approche initiale a tenté d'utiliser la syntaxe df [df.my_channel > 20000].my_channel = 0. Cependant, cette approche rencontre des problèmes lors du travail dans le DataFrame d'origine, comme l'a observé l'utilisateur.

Solution utilisant l'indexeur .loc

Pour pour résoudre ce problème, on peut utiliser l'indexeur .loc, qui est recommandé dans les versions plus récentes de Pandas. Cette syntaxe permet une sélection et une modification précises des lignes et des colonnes. Pour réaliser le remplacement souhaité, vous pouvez utiliser le code suivant :

mask = df.my_channel > 20000
column_name = 'my_channel'
df.loc[mask, column_name] = 0

Vous pouvez également condenser le code en une seule ligne :

df.loc[df.my_channel > 20000, 'my_channel'] = 0

Explication

La variable masque sélectionne les lignes où df.my_channel dépasse 20000. Par la suite, df.loc[mask, column_name] = 0 définit la colonne my_channel à zéro pour les lignes où le masque est True.

Remarque

Il est impératif d'utiliser le . loc indexeur dans ce cas, car l'utilisation de .iloc avec une indexation booléenne sur une colonne de type entier entraînera un 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!

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