快速替换 pandas.Series 中 datetime 的 tzinfo

5

我有一个日期时间的pandas.Series,并需要替换其中每个元素的时区信息。

我知道可以使用python函数和apply来完成,但速度非常慢:在MacBookPro上处理1M个元素需要大约16秒。

In [71]: s = pd.date_range('2015-1-1', freq='h', periods=1e6).to_series().reset_index(drop=True)

In [72]: %timeit s.apply(lambda x: x.replace(tzinfo=pytz.utc))
1 loops, best of 3: 16.7 s per loop

有没有numpy ufunc函数可以实现这个功能?
1个回答

6

使用dt.localize

In [33]:
import pytz
%timeit s.dt.tz_localize(pytz.utc)
%timeit s.apply(lambda x: x.replace(tzinfo=pytz.utc))

10 loops, best of 3: 107 ms per loop
1 loops, best of 3: 10.4 s per loop

正如您所看到的,速度快了约100倍。


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