有效地将pandas datetime索引切片特定时间

时间:2016-04-24 10:35:02

标签: python pandas

以特定时间获取数据帧的所有行的最有效方法是什么? 例如,如果我创建以下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

2 个答案:

答案 0 :(得分:10)

您可以使用at_timebetween_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]