numpy.select valeur par défaut numérique
Bonjour,
Je m'initie à Python et certaines librairies (Numpy, Pandas, etc).
J'ai une colonne numérique (l'âge des gens). Je veux créer à partir de celle-ci deux colonnes dans mon dataframe : une caractère qui va indiquer la classe d'âge, et une numérique qui correspondra aussi à chaque classe. Pour la caractère, j'arrive bien à définir une valeur vide par defaut avec default="". Mais pas pour la numérique.
Voici ce qu'il se passe :
- Si j'indique default="", j'obtiens une colonne caractère (apparemment appelée Object en Python, dites-moi si je me trompe), ce que je ne veux pas.
- Si je n'indique pas de valeur par defaut, j'ai bien une colonne numérique à la fin, mais avec 0 en valeur par default.
Je souhaite que la case reste vide. Apparemment c'est indiqué en NaN mais je n'arrive pas non plus avec default=NaN.
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10
| age_cond = [
(df['AGE'] <= 35),
(df['AGE'] <= 50),
(df['AGE'] <= 60),]
agegr = ["<= 35", "]35 - 50]", "]50 - 60]"]
agegrn = [1, 2, 3]
df_np = pd.DataFrame(df)
df_np ['AGEGR'] = np.select(age_cond, agegr, default="")
df_np ['AGEGRN'] = np.select(age_cond, agegrn) |
Avez-vous des conseils ?
J'ai une autre question à ce sujet même si je me doute de la réponse. On est bien d'accord pour dire qu'un code comme celui-ci correspond à un IF puis ELSE IF ? Je veux dire par là que l'ordinateur passe à la seconde condition (<=50) uniquement dans le cas où la précédente (<=35) n'est pas correcte.
Par ailleurs, si vous connaissez un moyen plus simple avec une autre librairie de créer ce genre de variables, je suis preneur.
Merci beaucoup !
alers