如何将 Pandas Series 的值转换为不同的时区

9

我有一个Pandas Series,其中值的类型为datetime64[ns]。这些日期处于EST时区,我想将它们转换为UTC时区。

例如:

 s=pd.Series(pd.date_range('2012-1-1 1:30',periods=3,freq='min'))

如何将s转换为UTC?

(请注意,我实际上没有使用date_range(),因此不能使用其tz参数。)

1个回答

14

更新:在最近的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 是否已经设置,可能是 tz_convert 而不是 tz_localize):

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

这个可以运行,但是速度非常慢。难道没有基于广播的方法来做这件事吗? - Chris Withers
1
是的!使用s.dt.tz_localize(这在2012年还不可用 :)) - Andy Hayden
您能把它作为新回答发布,这样我就可以点赞了吗? - Chris Withers
1
@ChrisWithers 我编辑了我的旧答案(我认为它并没有足够的不同来成为一个新答案 - 它实际上是相同的方法),但还是感谢你的点赞! :) - Andy Hayden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接