has dates attribute python string pandas datetime strftime

dates - python date to string



Cómo cambiar el formato de fecha y hora en pandas (6)

El valor de muestra de la columna DOB está en el formato: 1/1/2016 que de forma predeterminada se convierte en objeto como se muestra a continuación

DOB object

Convertir a formato de fecha

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

La fecha se convierte a

2016-01-26

dtype es

DOB datetime64[ns]

Ahora quiero convertir este formato de fecha al 01/26/2016 o en cualquier otro formato de fecha general. ¿Cómo lo hago?

Cualquiera sea el método que lo intente, siempre muestra la fecha en formato 2016-01-26 .


Cambiar el formato pero no cambiar el tipo:

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


El código a continuación cambia al tipo ''datetime'' y también se formatea en la cadena de formato dada. ¡Funciona bien!

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


El siguiente código funcionó para mí en lugar del anterior, ¡pruébelo!

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


En comparación con la primera respuesta, recomendaré usar dt.strftime () primero, luego pd.to_datetime (). De esta manera, todavía dará como resultado el tipo de datos datetime.

Por ejemplo,

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)


Puede probar esto, convertirá el formato de fecha a DD-MM-AAAA:

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


Puede usar dt.strftime si necesita convertir datetime a otros formatos (pero tenga en cuenta que el dtype de la columna será 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