5 votes

Pandas - Remplacer les autres colonnes de la ligne par 0 si une colonne spécifique a une valeur de 1

Voici un exemple de dataframe :

X Y Z 
1 0 1
0 1 0
1 1 1

Maintenant, voici la règle que j'ai trouvée :

  • X est laissé tel quel
  • Si Y est égal à 1, mettez la valeur correspondante dans X à 0.
  • Si Z est égal à 1, mettez la valeur correspondante dans X et Y à 0.

Le cadre de données final devrait ressembler à ceci :

X Y Z 
0 0 1
0 1 0
0 0 1

Ma première idée de solution est la suivante :

df_null_list = ['X']

for i in ['Y', 'Z']:

    df[df[i] == 1][df_null_list] = 0

    df_null_list.append(i)

Lorsque je fais cela et que j'additionne sur l'axe des y, je commence à obtenir des valeurs de 2 et 4 qui n'ont aucun sens. Remarque : je me réfère à l'exécution sur l'ensemble des données réelles.

Avez-vous des suggestions d'améliorations ou de solutions alternatives ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X