Python 当datetime列为时区时,是否检查其数据类型?

Python 当datetime列为时区时,是否检查其数据类型?,python,pandas,datetime,Python,Pandas,Datetime,我的数据帧中有一个时区感知列,当我运行dtypes时,我会得到输出datetime64[ns,pytz.FixedOffset(60)] 我正在编写一个脚本,以确保在将列数据添加到数据库之前,列数据的类型肯定是datatime64[ns] 但是,当我使用以下if语句检查列数据类型时: df['date'].dtypes!='datetime64[ns,pytz.FixedOffset(60)]” 我收到以下错误消息: TypeError:元数据字符串“[ns,pytz.FixedOffset(6

我的数据帧中有一个时区感知列,当我运行
dtypes
时,我会得到输出
datetime64[ns,pytz.FixedOffset(60)]

我正在编写一个脚本,以确保在将列数据添加到数据库之前,列数据的类型肯定是
datatime64[ns]

但是,当我使用以下if语句检查列数据类型时:

df['date'].dtypes!='datetime64[ns,pytz.FixedOffset(60)]”

我收到以下错误消息:
TypeError:元数据字符串“[ns,pytz.FixedOffset(60)]”中的日期时间单位无效。

所以基本上。。。当数据帧中的
dtype
列具有时区意识时,如何确认该列的类型为
datetime[*]

我的时区是伦敦/UTC。除了
read\u csv()
中的
parse\u dates
和:
df['date']=pd.to_datetime(df['date'],格式='%Y-%m-%dT%T%z')


我缺少什么吗?

df['date']。数据类型是一个对象。您应该能够对其进行str()操作,然后比较:

str(df['date'].dtypes) != 'datetime64[ns, pytz.FixedOffset(60)]'

df['date']。数据类型是一个对象。您应该能够对其进行str()操作,然后比较:

str(df['date'].dtypes) != 'datetime64[ns, pytz.FixedOffset(60)]'

我有一个类似的问题,我这样解决:

isinstance(df['col_name'].dtype, pd.core.dtypes.dtypes.DatetimeTZDtype)

我有一个类似的问题,我这样解决:

isinstance(df['col_name'].dtype, pd.core.dtypes.dtypes.DatetimeTZDtype)

我想这就是我要走的路。我正在使用一个自定义的模式验证器,我的设置如下:```对于目标列中的列:如果不是df[column],那么type\u targets=schema\u definition[column][0]。对于检查日期时间列,这是一个笨拙的故障切换,但是如果type_中的pd.DatetimeTZDtype是targets,并且是instance(df[column].dtype,pd.DatetimeTZDtype):continue``我想这就是方法。我正在使用一个自定义的模式验证器,我的设置如下:```对于目标列中的列:如果不是df[column],那么type\u targets=schema\u definition[column][0]。对于检查日期时间列,这是一个笨拙的故障切换,但是,如果类型_中的pd.DatetimeTZDtype是目标并且是实例(df[column].dtype,pd.DatetimeTZDtype):continue,则它可以工作```