相关疑难解决方法(0)

在pandas DataFrame/Series中快速选择时间间隔

我的问题是我想过滤一个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
Run Code Online (Sandbox Code Playgroud)

如你所知,如果我删除那天(第二个案例)它几乎需要两倍.如果我有很多不同的日子,例如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')
Run Code Online (Sandbox Code Playgroud)

那么,总结一下,有多快的方法可以按时间过滤多天?

谢谢

python indexing pandas

5
推荐指数
1
解决办法
6415
查看次数

标签 统计

indexing ×1

pandas ×1

python ×1