当不同的时区出现在不同的列中时,获取作为日期列的 pandas 数据框中的所有列

Get all columns in a pandas dataframe that is a date-column when different time-zones are present in different columns

(注意, SO 问题没有考虑不同的时区,即当存在时区时它不会捕获日期)。

我有一个数据框,其中一些列 dtype 是 datetime64[ns],一些是 datetime64[ns,UTC]

注意,它们都是使用

转换的

df["some_time_col"] = pd.to_datetime(df["some_time_col"]) 但由于 df 是跨不同数据库的数据合并,因此时区不同。

有没有办法获取所有属于日期列的列,即像这样的东西

dt_cols = df.select_dtypes(include=[pd.datetime]).columns

而不必像

那样指定所有个时区
dt_cols = df.select_dtypes(include=["datetim64","datetime64[UTC]","datetime64[UTC+1]"...).columns

使用

dt_cols = df.select_dtypes(include=[np.datetime64]).columns
dt_cols = df.select_dtypes(include=["datetime64"]).columns

没有捕捉到 datetime64[ns,UTC] 但只捕捉到 datetime64[ns]

使用:

df.select_dtypes('datetimetz')

来自 select_dtypes 文档:

To select Pandas datetimetz dtypes, use 'datetimetz' (new in 0.20.0) or 'datetime64[ns, tz]'

要同时选择 datetime 不带 tz 和带 tz,请执行:

df.select_dtypes(['datetimetz', 'np.datetime64'])