Here's a better way to approach this problem
Generate a sample of datetimes
In [28]: i = date_range('20130101',periods=20000000,freq='s')
In [29]: i
Out[29]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-01-01 00:00:00, ..., 2013-08-20 11:33:19]
Length: 20000000, Freq: S, Timezone: None
avg 20m times
In [30]: %timeit pd.to_timedelta(int((i.hour*3600+i.minute*60+i.second).mean()),unit='s')
1 loops, best of 3: 2.87 s per loop
The result as a timedelta (note that this requires numpy 1.7 and pandas 0.13 for the to_timedelta
part, coming very soon)
In [31]: pd.to_timedelta(int((i.hour*3600+i.minute*60+i.second).mean()),unit='s')
Out[31]:
0 11:59:12
dtype: timedelta64[ns]
In seconds (this will work for pandas 0.12, numpy >= 1.6).
In [32]: int((i.hour*3600+i.minute*60+i.second).mean())
Out[32]: 43152
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…