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
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
Ce code effectue les actions suivantes :
Vous pouvez également utiliser une seule ligne :
df.loc[df.my_channel > 20000, 'my_channel'] = 0
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!