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 : 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)
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