Différence entre colonne année et data d'aujourd'hui

Signaler
-
Messages postés
29072
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
3 juillet 2020
-
Bonjour,


Je souhaiterai créer une nouvelle colonne qui calcul la différence entre une colonne de mon dataset et l'année d'aujourd'hui.
J'ai en effet, une colonne appelée "YearBuilt" pour l'année de construction. Je voudrai soustraire les années de cette colonne avec l'année actuelle pour avoir l'ancienneté du batiment.

Merci à vous pour votre aide !

Isaure

3 réponses

Messages postés
29072
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
3 juillet 2020
6 474
Bonjour,

Récupérer la date du jour, extraire l'année, faire une soustraction
from datetime import date

YearBuilt = 2001
Today = date.today()
YearCurr =  int(Today.year)
print(YearBuilt,YearCurr,YearCurr - YearBuilt)


bonjour merci pour votre réponse

le souci que j'ai étant que YearBuilt est une colonne avec plusieurs données donc ce n'est pas une donnée fixe.
Mon objectif est de faire la différence entre les valeurs "année" d'une colonne par rapport à l'année en cours.
J'ai essayé cela :
from datetime import date

Today = date.today()
YearCurr = int(Today.year)
print(YearBuilt,YearCurr,YearCurr - data ['YearBuilt'])

mais cela ne fonctionne pas, cela ne doit pas être la bonne syntaxe
Messages postés
29072
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
3 juillet 2020
6 474
Il y a quoi dans YearBuild, fais un print

Car si cela contient 2001,2002,2010 c'est quoi la réponse à ancienneté ?
Messages postés
4
Date d'inscription
mercredi 24 juin 2020
Statut
Membre
Dernière intervention
24 juin 2020

Messages postés
29072
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
3 juillet 2020
6 474 >
Messages postés
4
Date d'inscription
mercredi 24 juin 2020
Statut
Membre
Dernière intervention
24 juin 2020

Si tu as une liste de données tu fais une boucle où tu traites chaque ligne pour faire le calcul
Messages postés
4
Date d'inscription
mercredi 24 juin 2020
Statut
Membre
Dernière intervention
24 juin 2020
>
Messages postés
29072
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
3 juillet 2020

d'accord très bien, vous avez des indications afin de transformer la colonne de date en liste ?
Messages postés
29072
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
3 juillet 2020
6 474 >
Messages postés
4
Date d'inscription
mercredi 24 juin 2020
Statut
Membre
Dernière intervention
24 juin 2020

comme tu n'as décrit ni ton environnement, ni donné d'exemple de ton code python, par exemple celui qui génère la liste plus haut, on ne va rien pouvoir de dire plus
Messages postés
4
Date d'inscription
mercredi 24 juin 2020
Statut
Membre
Dernière intervention
24 juin 2020
>
Messages postés
29072
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
3 juillet 2020

Je travaille sur jupyter
et il s'agit de ce dataset https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data (concaténation du train et du test) que j'ai nommé data

#concatenation des fichiers "train" et "test" 
data = pd.concat([train,test])
data.head() 
Messages postés
29072
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
3 juillet 2020
6 474 >
Messages postés
4
Date d'inscription
mercredi 24 juin 2020
Statut
Membre
Dernière intervention
24 juin 2020

Dataset ne me parlant pas, si data est une liste 2D, tu vas faire une boucle, et avec par exemple YearBuilt en position 5

for i in range(len(data)):
     anciennete = YearCurr - data[i][5]


puis peut être pour le rajouter en fin de ligne
data.append[i](anciennete)