时区对Pandas的影响将datetime.datetime转换为datetime64

时间:2016-10-18 16:13:16

标签: pandas timezone datetime64

我试图了解pandas在添加到DataFrame时如何处理日期时间戳。在我的机器上,日期是在4小时前存储的。我怎样才能阻止这种情况发生?

前:

import pandas as pd  
import datetime  
test = pd.DataFrame({'A':['a','b','c'],'B':[1,2,3]})
test  
Out[31]:  
   A  B  
0  a  1  
1  b  2  
2  c  3  

dt = datetime.datetime(2016,10,4)
test['dt']=dt  
test  
Out[35]: 
   A  B         dt
0  a  1 2016-10-04
1  b  2 2016-10-04
2  c  3 2016-10-04

到目前为止一切都那么好,但是当我将数值看作数组时,我得到了:

test.dt.unique()  
Out[36]: array(['2016-10-03T20:00:00.000000000-0400'], dtype='datetime64[ns]')  

我如何保持这个2016-10-04T00:...
我想将它保存为日期对象,并且无论代码运行的时区如何都一样吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

自从我发布这个以来,我在一小时左右就发现了一些东西。它远非理想的解决方案,但可以达到我的目的。

首先,我在NumPy中找到了一些关于缺乏天真时区的讨论,以供参考:
https://mail.scipy.org/pipermail/numpy-discussion/2013-April/066038.html

注意:我使用的是NumPy 1.8.1和Pandas 0.14.0

出于我的目的,我只是在机器当地时区迫使一切到午夜。

MAIN__':
  test.f03:(.text+0x751): undefined reference to

答案 1 :(得分:0)

另见@MaxU上面的第二条评论,转载于此处。

test['dt'] = pd.to_datetime('2016-10-04', utc=True)