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!