高效地按照特定时间切片Pandas日期时间索引

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

11
你可以使用 at_timebetween_time 方法:
print df.at_time('15:00')

print df.between_time(start_time='15:00', end_time='16:00')

1
每个操作都只需要不到200毫秒的时间,太棒了! - graham

6
请尝试这个:
df.loc[df.index.hour == 15]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接