web-dev-qa-db-fra.com

Comment changer le format de date et heure dans pandas

La valeur de l'échantillon de colonne DOB est au format - 1/1/2016 qui, par défaut, est converti en objet, comme indiqué ci-dessous.

DOB       object

Conversion au format de date

df['DOB'] = pd.to_datetime(df['DOB'])

Date convertie en

2016-01-26

dtype est

DOB       datetime64[ns]

Maintenant, je veux convertir ce format de date en 01/26/2016 ou en tout autre format de date général. Comment fait-on ça?

Quelle que soit la méthode que j'essaie, la date est toujours affichée au format 2016-01-26.

54
yome

Vous pouvez utiliser dt.strftime si vous devez convertir datetime vers d'autres formats (mais notez qu'alors dtype de la colonne sera object (string)):

_import pandas as pd

df = pd.DataFrame({'DOB': {0: '26/1/2016', 1: '26/1/2016'}})
print (df)
         DOB
0  26/1/2016 
1  26/1/2016

df['DOB'] = pd.to_datetime(df.DOB)
print (df)
         DOB
0 2016-01-26
1 2016-01-26

df['DOB1'] = df['DOB'].dt.strftime('%m/%d/%Y')
print (df)
         DOB        DOB1
0 2016-01-26  01/26/2016
1 2016-01-26  01/26/2016
_
106
jezrael

Changer le format mais pas le type:

df['date'] = pd.to_datetime(df["date"].dt.strftime('%Y-%m'))
8
Yanni Cao

Le code ci-dessous a fonctionné pour moi au lieu du précédent - essayez-le!

df['DOB']=pd.to_datetime(df['DOB'].astype(str), format='%m/%d/%Y')
5
rishi jain

Par rapport à la première réponse, je recommanderai d'utiliser d'abord dt.strftime (), puis pd.to_datetime (). De cette manière, le type de données datetime sera toujours généré.

Par exemple,

import pandas as pd

df = pd.DataFrame({'DOB': {0: '26/1/2016 ', 1: '26/1/2016 '})
print(df.dtypes)

df['DOB1'] = df['DOB'].dt.strftime('%m/%d/%Y')
print(df.dtypes)

df['DOB1'] = pd.to_datetime(df['DOB1'])
print(df.dtypes)
4
user3512680

Le code ci-dessous devient un type 'datetime' et se présente également dans la chaîne de format indiquée. Fonctionne bien!

df['DOB']=pd.to_datetime(df['DOB'].dt.strftime('%m/%d/%Y'))
1
San

Vous pouvez essayer ceci, il convertira le format de date en JJ-MM-AAAA:

df['DOB'] = pd.to_datetime(df['DOB'], dayfirst = True)
0
Ashu007