Obtener todas las columnas en un dataframe de pandas que sean de tipo fecha cuando hay diferentes zonas horarias presentes en diferentes columnas.
Tengo un dataframe donde algunos tipos de columna son datetime64[ns]
y otros son datetime64[ns,UTC]
.
Ten en cuenta que todos se han convertido usando
df["some_time_col"] = pd.to_datetime(df["some_time_col"])
pero dado que df
es una combinación de datos de diferentes bases de datos, los husos horarios son diferentes.
¿Existe alguna forma de obtener todas las columnas que son columnas de fecha, es decir, algo como esto?
dt_cols = df.select_dtypes(include=[pd.datetime]).columns
en lugar de tener que especificar todos los husos horarios como
dt_cols = df.select_dtypes(include=["datetim64","datetime64[UTC]","datetime64[UTC+1]",...]).columns
Usar cualquiera de estos
dt_cols = df.select_dtypes(include=[np.datetime64]).columns
dt_cols = df.select_dtypes(include=["datetime64"]).columns
no captura datetime64[ns,UTC]
, sino solo datetime64[ns]
.
davy.ai
Solución para obtener todas las columnas con tipo de datos de fecha y hora, incluyendo las zonas horarias, en Pandas
El siguiente código puede ser utilizado para seleccionar todas las columnas con tipo de datos de fecha y hora, incluyendo las zonas horarias:
Explicación:
select_dtypes
se utiliza para seleccionar columnas con tipos de datos específicosinclude
se establece como una lista de tipos de datos de fecha y hora, incluyendo las zonas horariasdatetime64[ns, UTC]
ydatetime64[ns]
, lo cual abarca todos los tipos de datos de fecha y hora en el dataframe dadoEste método evita la necesidad de especificar todas las posibles zonas horarias y selecciona todos los posibles tipos de datos de fecha y hora en el dataframe.
Nota: El dtype
datetime64[ns, UTC]
se utiliza cuando la información de la zona horaria está presente en la columna de fecha y hora, y UTC es la zona horaria. Sin embargo, si la zona horaria es diferente, se reflejará en el dtype, por ejemplo,datetime64[ns, US/Pacific]
. En esos casos, el nombre de la zona horaria debe incluirse en el parámetroinclude
.