Maison > développement back-end > Tutoriel Python > Comment remplacer efficacement les valeurs Pandas DataFrame en fonction d'une condition ?

Comment remplacer efficacement les valeurs Pandas DataFrame en fonction d'une condition ?

Barbara Streisand
Libérer: 2024-12-22 09:03:24
original
720 Les gens l'ont consulté

How to Efficiently Replace Pandas DataFrame Values Based on a Condition?

Remplacement conditionnel dans les DataFrames Pandas

Dans les dataframes Pandas, remplacer des valeurs en fonction d'une condition est une tâche courante. Imaginons une situation dans laquelle vous devez définir les valeurs d'une colonne spécifique sur zéro si elles dépassent une valeur seuil.

Approche originale :

Une approche courante pour y parvenir est en utilisant l'indexeur df[].ix, qui est obsolète dans les versions Pandas 0.20.0 et plus haut.

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

Solutions alternatives :

Avec l'introduction des indexeurs loc et iloc, la méthode recommandée pour effectuer des remplacements conditionnels est :

Utilisation de l'indexeur de loc :

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

Le loc L'indexeur permet la sélection de lignes et de colonnes en fonction de masques booléens. Dans ce cas, le masque sélectionne les lignes où df['my_channel'] > 20000, et ces lignes sont définies sur zéro dans la colonne « my_channel ».

Utilisation de l'indexeur iloc :

mask = df['my_channel'] > 20000
df.iloc[mask.index, df.columns.get_loc('my_channel')] = 0
Copier après la connexion

L'indexeur iloc permet une sélection basée sur indices entiers. Dans ce cas, les indices de masque sont utilisés pour sélectionner les lignes, et l'index de colonne de 'my_channel' est utilisé pour mettre les valeurs à zéro.

Remarque : Dans ce cas précis, l'utilisation de l'indexeur loc est recommandée plutôt que de l'indexeur iloc car iloc ne prend pas en charge l'indexation booléenne sur les colonnes entières.

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 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