round_to_5min(t)使用
timedelta算术的解决方案是正确的,但是很复杂而且很慢。而是
Timstamp在pandas中使用漂亮的东西:
import numpy as npimport pandas as pdns5min=5*60*1000000000 # 5 minutes in nanoseconds pd.to_datetime(((df.index.astype(np.int64) // ns5min + 1 ) * ns5min))
让我们比较一下速度:
rng = pd.date_range('1/1/2014', '1/2/2014', freq='S')print len(rng)# 86401# ipython %timeit %timeit pd.to_datetime(((rng.astype(np.int64) // ns5min + 1 ) * ns5min))# 1000 loops, best of 3: 1.01 ms per loop%timeit rng.map(round_to_5min)# 1 loops, best of 3: 1.03 s per loop快大约1000倍!



