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 :
Avez-vous des conseils ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
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
Partager