我有一个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函数?
答案 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倍