Convertir le type de colonne DataFrame de string en datetime
Comment puis-je convertir une colonne DataFrame de chaînes (au format JJ/mm/AAAA) en datetimes?
3 réponses
, Le plus simple est d'utiliser to_datetime
:
df['col'] = pd.to_datetime(df['col'])
Il offre également un argument dayfirst
pour les temps européens (mais attention ce n'est pas strict ).
Ici, il est en action:
In [11]: pd.to_datetime(pd.Series(['05/23/2005']))
Out[11]:
0 2005-05-23 00:00:00
dtype: datetime64[ns]
Vous pouvez passer un format spécifique :
In [12]: pd.to_datetime(pd.Series(['05/23/2005']), format="%m/%d/%Y")
Out[12]:
0 2005-05-23
dtype: datetime64[ns]
Si votre colonne date est une chaîne au format '2017-01-01' vous pouvez utiliser pandas astype pour le convertir en datetime.
df['date'] = df['date'].astype('datetime64[ns]')
Ou utilisez datetime64 [D] si vous voulez une précision de jour et non des nanosecondes
print(type(df_launath['date'].iloc[0]))
Rendements
<class 'pandas._libs.tslib.Timestamp'>
la même chose que lorsque vous utilisez pandas. to_datetime
Vous pouvez l'essayer avec d'autres formats puis '% Y - % m - % D ' mais au moins cela fonctionne.
Vous pouvez utiliser ce qui suit si vous voulez spécifier des formats difficiles:
df['date_col'] = pd.to_datetime(df['date_col'], format='%d/%m/%Y')