1

我有一堆 DataFrame,我想只选择一天中特定时间出现的数据。比如说,在上午 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"]

无论如何我可以做到这一点吗?

4

1 回答 1

1

几乎!这几乎就是那么容易。只需使用between_time.

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

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

于 2017-08-08T22:17:31.773 回答