0
votes

Vérification si une chaîne est présente dans différentes colonnes. Si présent change une autre variable en pandas

J'essaie d'utiliser une ligne de condition à la ligne et si true changez une variable dans ma ligne de Dataframe à la ligne.

Voici quelques données d'échantillons: P>

   grade  new_grade pred1  pred2 pred3
0      1          1   yes  yes-x   yes
1      2          1  no-x  yes-x  no-x
2      3          3    no    yes   yes


1 commentaires

Désolé j'ai foiré la sortie souhaitée. C'est correct maintenant


3 Réponses :


1
votes

Dans votre cas, nous pouvons utiliser contient xxx


1 commentaires

Existe-t-il un moyen de faire fonctionner cela si disons que j'ai ajouté un PRD4 qui n'a que NP.Nan? Existe-t-il un moyen d'obtenir le même résultat en ajoutant dans cette colonne?



1
votes

Nous pouvons utiliser df.filter pour obtenir tous les colonnes et vérifier si elles contiennent un x . Ensuite, utilisez np.where pour soustraire conditionnellement 1 à partir de grade avec .SUB : xxx

Sortie xxx

sortie avec nan : xxx


2 commentaires

Existe-t-il un moyen de faire fonctionner cela si disons que j'ai ajouté un PRD4 qui n'a que NP.Nan? Existe-t-il un moyen d'obtenir le même résultat en ajoutant dans cette colonne?


Oui, voir Modifier @jake. La méthode .All skips nan Par défaut, voir Docs



1
votes

Essayez ceci:

cond1 = df.pred1.str.endswith('x')
cond2 =  df.pred2.str.endswith('x')
cond3 = df.pred3.str.endswith('x')
df['new_grad'] = df['grade'].where(~(cond1 & cond2 & cond3), df['grade'] - 1)


2 commentaires

Existe-t-il un moyen de faire fonctionner cela si disons que j'ai ajouté un PRD4 qui n'a que NP.Nan? Existe-t-il un moyen d'obtenir le même résultat en ajoutant dans cette colonne?


@Jake, dépend, si vous ne prenez pas compte de cette nouvelle colonne, la solution devrait alors fonctionner.