La valeur dans ma liste est un delta de jours par rapport à la date de début. J'ai besoin de les convertir au format de date (en AAAAJ). J'utilisais le code suivant:

import datetime
date = "20180330"
y = int(date[0:4])
m = int(date[4:6])
d = int(date[6:8])
starting_date = datetime.date(y, m, d)
tanor = map(lambda x: starting_date + datetime.timedelta(days=int(x)) 

Cela ne semble pas fonctionner.

0
G.C 20 nov. 2018 à 18:08

3 réponses

Meilleure réponse

Essaye ça

import datetime

date = "20180330"
date = datetime.datetime.strptime(date, "%Y%m%d")

list_of_days = [1,2,3]

l = [(date + datetime.timedelta(days=d)).strftime("%Y-%m-%d") for d in list_of_days]
print(l)

Production

['2018-03-31', '2018-04-01', '2018-04-02']
2
iamklaus 20 nov. 2018 à 15:13
tanor = map(lambda x: starting_date + DT.timedelta(days=int(x))

Vous ne passez rien au map, c'est-à-dire: vous ne lui donnez pas la liste des deltas.

Tenez compte du fait que si vous utilisez Python 3.x, map n'appliquera pas immédiatement l'opération. Vous devrez soit répéter le résultat, soit le passer à une liste.

Donc:

tanor = list(map(lambda x: starting_date + DT.timedelta(days=int(x)), my_deltas))
2
mementum 20 nov. 2018 à 15:14

Cela pourrait vous aider:

import datetime
date = "20180330"
dates = ["20180330","20180430","20160130"]
# Timestamp
datesConverted = map(lambda x: pd.to_datetime(x),dates)
print(list(datesConverted))
# Datetime
datesConverted = map(lambda x: pd.to_datetime(x).date(),dates)
print(list(datesConverted))

Je convertis votre liste de chaînes en une liste de dates et heures ou horodatages

2
Manrique 20 nov. 2018 à 15:14