Remplacement conditionnel de valeurs dans les Pandas DataFrames
Lorsque vous travaillez avec des Pandas DataFrames, vous pouvez rencontrer des situations dans lesquelles vous devez remplacer conditionnellement des valeurs basées sur un état spécifié. Cette question illustre un tel scénario, dans lequel un utilisateur cherche à remplacer les valeurs d'une colonne particulière qui dépassent une valeur seuil par zéro.
Initialement, l'utilisateur a tenté d'utiliser l'approche suivante :
df[df.my_channel > 20000].my_channel = 0
Cependant, cette méthode n’a donné aucun résultat. En effet, Pandas a obsolète l'indexeur .ix depuis la version 0.20.0 et les utilisateurs devraient plutôt utiliser les indexeurs .loc ou .iloc.
La bonne solution implique d'utiliser .loc ou .iloc pour cibler des lignes ou des colonnes spécifiques. et effectuez le remplacement conditionnel. Voici comment utiliser .loc :
mask = df.my_channel > 20000 column_name = 'my_channel' df.loc[mask, column_name] = 0
Vous pouvez également accomplir la même tâche sur une seule ligne en utilisant .loc :
df.loc[df.my_channel > 20000, 'my_channel'] = 0
La variable masque permet d'identifier les lignes qui satisfont la condition df.my_channel > 20000 et df.loc[mask, column_name] = 0 attribue 0 aux lignes sélectionnées dans la colonne spécifiée.
Remarque : Dans ce scénario spécifique, il est recommandé d'utiliser .loc à la place de .iloc pour éviter une NotImplementedError, car l'indexation booléenne basée sur des entiers avec .iloc n'est pas pris en charge.
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!