Combiner 2 variables issues d'un même df

Bonjour,
Dans mon df_final j’ai 2 colonnes « Annee » et « Annee2 », elles contiennent des valeurs communes et différentes. Je ne peux pas écraser l’une ou l’autre car chacune contient des infos que je souhaite conserver. Si vous regardez les chiffres comparés sur les 2 colonnes, ils sont les mêmes entre 2016 et 2020 mais… dans « Annee » j’ai des données en 2011 et 2012 , et dans « Annee2 » j’ai des données additionnelles en 2021. Je veux recréer une colonne « Annee_tot » qui comprend l’exhaustivité des valeurs par année.

Salut Justine
Tu peux montrer à quoi ressemble ton df_final stp ?
Quelles sont tes autres colonnes en plus de Annee et Annee2 ?
Je ne suis pas certain d’avoir bien compris ce que tu souhaites avoir comme résultat au final
Merci

Salut,

Voici la vision de mon df_final :

En gros, pour créer une nouvelle colonne, je pourrais passer mes NAN à 0 et faire une df_final[« Annee_tot »]=df_final[« Annee »]+df_final[« Annee2 »] mais j’ai des données communes donc je ne vais pas additionner des années.
Mon objectif: garder les années communes et intégrer les non-communes à une seule et même variable Annee_tot.
Mes années sont en float car encore en nettoyage, ne pas en tenir compte. Merci

Alors, je ne sais pas par quelles opérations tu as pu arriver avec ce df_final qui a 2 colonnes Année qui ont, soit les mêmes valeurs, soit l’une des 2 avec un NaN

Quoi qu’il en soit, je vois 2 possibilités :

  1. Soit tu oublies Annee et Annee2, et tu crées une nouvelle colonne Annee qui extrait l’année depuis Date_datetime
df_final['Date_datetime'] = pd.to_datetime(df_final['Date_datetime'], format='%Y-%m-%d')
df_final['Annee'] = df_final['Date_datetime'].dt.year
  1. Soit tu ne peux utiliser Date_datetime car des valeurs sont manquantes (ce qui ne semble pas être le cas sur les lignes qu’on peut voir) et tu prends le max des 2 colonnes Annee (au lieu de faire la somme) pour créer une nouvelle colonne Annee, en remplaçant les NaN par des 0
import numpy as np
df_final[['Annee','Annee2']] = df_final[['Annee','Annee2'].replace(np.nan,0, regex=True)
df_final['Annee3'] = df_final.apply(lambda x: np.max([x['Annee'],x['Annee2']]) , axis=1)

En espérant que cela puisse t’aider
Bon week-end

1 Like

Merci bcp Xavier pour tes réponses.

Mon dataset est le rassemblement de plusieurs fichiers ayant pour index soit la date_datetime soit l annee.

J ai donc créer mon annee2 sur la date_datetime et ais ainsi eu des points communs et des différences entre annee et annee2.

J ai fini par trouver une autre alternative pour garder annee et ajouter seulemnt les 2021 qui me manquaient parmi annee2.

Merci pour tes solutions :slight_smile:

1 Like