在时区检查pandas datetime列的dtype?

时间:2019-05-13 09:59:11

标签: python pandas datetime

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

我正在编写脚本以确保在将列数据添加到数据库之前,该列数据的类型绝对为datatime64[ns]

但是,当我使用以下if语句检查列dtype时:

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

我收到以下错误消息: TypeError: Invalid datetime unit in metadata string "[ns, pytz.FixedOffset(60)]"

所以基本上...当列为时区感知者时,如何确认熊猫数据框中的dtype列为datetime[*]类型?

P.S我的时区是伦敦/ UTC。除了parse_datesread_csv()以外的其他列,我还没有进行任何其他格式化/解析,并且: df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%dT%T%z')

有什么我想念的吗?

谢谢

2 个答案:

答案 0 :(得分:2)

df ['date']。dtypes是一个对象。您应该能够对它进行str()然后进行比较:

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

答案 1 :(得分:2)

我有一个类似的问题,并且我通过以下方式解决了

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