从 DatetimeIndex 中选择特定时间范围内的时间戳

Pick Timestamps in Certain Time Range From a DatetimeIndex

我有一堆 DataFrames,我想 select 仅在一天中的特定时间出现的数据。比如说,上午 9 点到下午 5 点之间。但是数据在9点之前开始,5点之后结束。

import numpy as np
import pandas as pd

start = pd.Timestamp("20170807 08:30-0400")
end = pd.Timestamp("20170807 17:30-0400")
index = pd.DatetimeIndex(start=start, end=end, freq="10min")
data = np.random.randint(0, 100, size=(55, 3))
columns = ["A", "B", "C"]
df = pd.DataFrame(data, index=index, columns=columns)

我可以通过以下方式获取我想要的数据:

df[(df.index >= "20170807 09:00-0400") & (df.index <= "20170807 17:00-0400")]["A"]

但我真正喜欢的是一种不依赖于日期的优雅方法。

即我希望能够做到:

df[(df.index >= "09:00-0400") & (df.index <= "17:00-0400")]["A"]

有什么办法可以做到吗?

差不多!几乎就是这么简单。只需使用 between_time.

df.between_time('08:00', '17:00')

要仅获取列 A,请在上面附加 .loc[:, 'A']