我的问题是,我想将DataFrame过滤,只包括在时间间隔[start,end)内的时间。如果不关心日期,我想仅为每天的开始和结束时间进行过滤。我有一个解决方案,但它很慢。所以我的问题是,是否有更快的方法来进行基于时间的过滤。
示例:
所以,总结一下,在许多天内按照一天中的时间进行过滤有更快的方法吗?
谢谢。
示例:
import pandas as pd
import time
index=pd.date_range(start='2012-11-05 01:00:00', end='2012-11-05 23:00:00', freq='1S').tz_localize('UTC')
df=pd.DataFrame(range(len(index)), index=index, columns=['Number'])
# select from 1 to 2 am, include day
now=time.time()
df2=df.ix['2012-11-05 01:00:00':'2012-11-05 02:00:00']
print 'Took %s seconds' %(time.time()-now) #0.0368609428406
# select from 1 to 2 am, for every day
now=time.time()
selector=(df.index.hour>=1) & (df.index.hour<2)
df3=df[selector]
print 'Took %s seconds' %(time.time()-now) #Took 0.0699911117554
可以看到,如果我移除日期(第二种情况),计算时间需要近两倍。如果我有多个不同的日期,例如从11月5日到7日,则计算时间会迅速增加:
index=pd.date_range(start='2012-11-05 01:00:00', end='2012-11-07 23:00:00', freq='1S').tz_localize('UTC')
所以,总结一下,在许多天内按照一天中的时间进行过滤有更快的方法吗?
谢谢。
between_date
这样的东西? - Nipun Batra