以特定时间获取数据帧的所有行的最有效方法是什么? 例如,如果我创建以下DataFrame,
df = DataFrame(index=pd.date_range('2010-01-01', '2016-04-01',freq='min'))
然后尝试以下午3点的时间获取所有行:
%timeit df[df.index.time == time(15,0)]
1 loops, best of 3: 9.29 s per loop
它有效,但速度很慢。
另外,如何在两个特定时间之间有效切片?
%timeit df[(df.index.time >= time(15,0)) & (df.index.time <= time(16,0))]
1 loops, best of 3: 18.7 s per loop
答案 0 :(得分:10)
您可以使用at_time
和between_time
:
print df.at_time('15:00')
print df.between_time(start_time='15:00', end_time='16:00')
答案 1 :(得分:6)
试试这个:
df.loc[df.index.hour == 15]