Python和Pandas中的日期时间和时间戳相等



我一直在玩日期时间和时间戳,我遇到了一些我不能理解的东西。

import pandas as pd
import datetime
year_month = pd.DataFrame({'year':[2001,2002,2003], 'month':[1,2,3]})
year_month['date'] = [datetime.datetime.strptime(str(y) + str(m) + '1', '%Y%m%d') for y,m in zip(year_month['year'], year_month['month'])]
>>> year_month
  month  year       date
0     1  2001 2001-01-01
1     2  2002 2002-02-01
2     3  2003 2003-03-01

我认为这个独特的函数对时间戳做了一些事情,以某种方式改变了它们:

first_date = year_month['date'].unique()[0]
>>> first_date == year_month['date'][0]
False
在事实:

>>> year_month['date'].unique()
array(['2000-12-31T16:00:00.000000000-0800',
       '2002-01-31T16:00:00.000000000-0800',
       '2003-02-28T16:00:00.000000000-0800'], dtype='datetime64[ns]')

我怀疑函数下面有某种时区差异,但我不能弄清楚。

编辑

我只是检查了python命令列表(set())作为唯一函数的替代方案,并且它有效。

您必须转换为datetime64进行比较:

In [12]:
first_date == year_month['date'][0].to_datetime64()
Out[12]:
True

这是因为unique已将dtype转换为datetime64:

In [6]:    
first_date = year_month['date'].unique()[0]
first_date
Out[6]:
numpy.datetime64('2001-01-01T00:00:00.000000000+0000')

我认为是因为unique返回一个np数组,并且目前numpy理解TimeStamp没有dtype:在日期时间,时间戳和日期时间64之间转换

相关内容

  • 没有找到相关文章

最新更新