Datetime 如何转换系列值的时区

Datetime 如何转换系列值的时区,datetime,numpy,timezone,pandas,Datetime,Numpy,Timezone,Pandas,我有一个pandas系列,其值类型为datetime64[ns]。日期在东部时间时区,我想把它们转换成UTC时区 例如: 如何将s转换为UTC (请注意,我实际上没有使用date\u range(),因此使用其tz参数不是一个选项。)更新:在最近的pandas中,您可以使用dt访问器来广播: In [11]: s.dt.tz_localize('UTC') Out[11]: 0 2012-01-01 01:30:00+00:00 1 2012-01-01 01:31:00+00:00 2

我有一个pandas系列,其值类型为
datetime64[ns]
。日期在东部时间时区,我想把它们转换成UTC时区

例如:

如何将
s
转换为UTC


(请注意,我实际上没有使用
date\u range()
,因此使用其
tz
参数不是一个选项。)

更新:在最近的pandas中,您可以使用dt访问器来广播:

In [11]: s.dt.tz_localize('UTC')
Out[11]:
0   2012-01-01 01:30:00+00:00
1   2012-01-01 01:31:00+00:00
2   2012-01-01 01:32:00+00:00
dtype: datetime64[ns, UTC]

这里有一种方法(取决于tz是否已经设置,它可能是a而不是):


这是可行的,但速度很慢。没有基于广播的方法来实现这一点吗?是的!使用
s.dt.tz_localize
(这在2012年是不可用的:))你能把它作为一个新答案发布,这样我就可以投票了吗?@ChrisWithers我把它编辑成我的旧答案(我认为它与新答案没有多大区别,实际上是相同的方法),但谢谢你的投票想法!)
In [11]: s.dt.tz_localize('UTC')
Out[11]:
0   2012-01-01 01:30:00+00:00
1   2012-01-01 01:31:00+00:00
2   2012-01-01 01:32:00+00:00
dtype: datetime64[ns, UTC]
In [21]: from pandas.lib import Timestamp

In [22]: s.apply(lambda x: x.tz_localize('UTC')) 
Out[22]: 
0    2012-01-01 06:30:00+00:00
1    2012-01-01 06:31:00+00:00
2    2012-01-01 06:32:00+00:00