快速替换pandas的tzinfo。系列的datetime

时间:2015-11-02 13:48:58

标签: python datetime numpy pandas

我有一个pandas.Series的日期时间,需要为其中的每个元素替换tzinfo。

我知道如何使用apply和python函数进行操作,但速度非常慢:MacBookPro上的1M元素为~16s

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 个答案:

答案 0 :(得分:4)

使用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倍