时区对Pandas转换日期时间的影响.Datetime到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-04:…
我想维护它作为一个日期对象,并有它相同的,不管时区在哪里的代码正在运行?

在我发布这篇文章后的一个小时左右,我发现了一些东西。这不是理想的解决办法,但对我的目的有效。

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

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

对于我的目的,我只是将所有的东西都强制到午夜在机器的当地时区。

tz_adjust = np.timedelta64(int(-int(str(np.datetime64(datetime.datetime.now()))[-5:])/100),'h')  
test['dt']=np.datetime64(dt) + tz_adjust
test
Out[75]: 
   A  B                  dt
0  a  1 2016-10-04 04:00:00
1  b  2 2016-10-04 04:00:00
2  c  3 2016-10-04 04:00:00
test.dt.unique()
Out[76]: array(['2016-10-04T00:00:00.000000000-0400'], dtype='datetime64[ns]')

也可以看到@MaxU的第二条评论,转发到这里。

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

相关内容

  • 没有找到相关文章