2015-11-02 79 views
3

的pandas.Series我有日期時間的pandas.Series,需要更換tzinfo在它的每一個元素。快速更換tzinfo日期時間

我知道如何使用apply與Python功能做到這一點,但它是非常緩慢:〜100萬個爲16S元素上的MacBookPro

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它的功能?

回答

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倍速度

+0

完美。謝謝 –