我在数据框中有一个时区感知列,当我运行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_dates
中read_csv()
以外的其他列,我还没有进行任何其他格式化/解析,并且:
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%dT%T%z')
有什么我想念的吗?
谢谢
答案 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)