我有一堆DataFrames,我只想选择在白天某些时间发生的数据。比如,上午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"]
反正我能做到吗?
答案 0 :(得分:1)
几乎!这几乎就是这么简单。只需使用between_time
。
df.between_time('08:00', '17:00')
要仅获取列A
,请使用.loc[:, 'A']