J'ai la trame de données suivante.
id int_date
1 20160228
2 20161231
3 20160618
4 20170123
5 20151124
Comment convertir la date ci-dessus au format int au format date de mm/jj/aaaa? Vous voulez cela dans un format particulier pour d'autres opérations Excel?
id int_date
1 02/28/2016
2 12/31/2016
3 06/18/2016
4 01/23/2017
5 11/24/2015
EST-IL également possible de générer une troisième colonne avec seulement Mois en mots? comme janvier, février etc. depuis int_date?
J'ai essayé de suivre
date = datetime(year=int(s[0:4]), month=int(s[4:6]), day=int(s[6:8]))
mais la date est dans l'objet datetime, comment le mettre comme date dans pandas DF?
Vous pouvez utiliser les méthodes datetime
.
from datetime import datetime
a = '20160228'
date = datetime.strptime(a, '%Y%m%d').strftime('%m/%d/%Y')
Bonne chance;
Créez une nouvelle colonne avec applymap
:
import pandas as pd
dates = [
20160228,
20161231,
20160618,
20170123,
20151124,
]
df = pd.DataFrame(data=list(enumerate(dates, start=1)), columns=['id','int_date'])
df[['str_date']] = df[['int_date']].applymap(str).applymap(lambda s: "{}/{}/{}".format(s[4:6],s[6:], s[0:4]))
print(df)
Émet:
$ python test.py
id int_date str_date
0 1 20160228 02/28/2016
1 2 20161231 12/31/2016
2 3 20160618 06/18/2016
3 4 20170123 01/23/2017
4 5 20151124 11/24/2015
Il y a forcément une meilleure solution à cela, mais comme vous avez des zéros au lieu d'éléments à un chiffre dans votre date (c'est-à-dire 06 au lieu de 6), pourquoi ne pas simplement le convertir en chaîne et convertir les sous-sections?
l'utilisation de datetime vous permettrait également d'obtenir les chaînes de mois, etc.
// edit: pour être un peu plus précis, quelque chose comme ça devrait faire l'affaire:
def get_datetime(date):
date_string = str(date)
return datetime.date(date_string[:3], date_string[4:6], date_string[6:8]