# Set index
df = df.set_index(df['date'])
# Select observations between two datetimes
df.loc[pd.Timestamp('2002-1-1 01:00:00'):pd.Timestamp('2002-1-1 04:00:00')]
In [14]: df = pd.DataFrame(
...: {'alpha': list('ABCDE'), 'num': range(5)},
...: index=pd.date_range('2022-06-30', '2022-07-04'),
...: )
In [15]: df
Out[15]:
alpha num
2022-06-30 A 0
2022-07-01 B 1
2022-07-02 C 2
2022-07-03 D 3
2022-07-04 E 4
In [16]: df.query('index >= "2022-07-02"')
Out[16]:
alpha num
2022-07-02 C 2
2022-07-03 D 3
2022-07-04 E 4
In [5]: df = pd.DataFrame(
...: ...: {'alpha': list('ABCDE'), 'num': range(5)},
...: ...: index=pd.date_range('2022-06-30', '2022-07-04'),
...: ...: )
In [6]: df
Out[6]:
alpha num
2022-06-30 A 0
2022-07-01 B 1
2022-07-02 C 2
2022-07-03 D 3
2022-07-04 E 4
In [7]: df[df.index > pd.Timestamp('2022-06-30')]
Out[7]:
alpha num
2022-07-01 B 1
2022-07-02 C 2
2022-07-03 D 3
2022-07-04 E 4
4条答案
按热度按时间oug3syen1#
使用索引从DataFrame中选择的示例:
hfyxw5xn2#
现有答案是正确的,但是如果我们基于索引进行选择,the second method from here会更快:
jm81lzqq3#
或者,您可以使用
query
:u7up0aaq4#
将ntg和Datageek的答案结合起来,以解决每个答案的问题。使用
dateutil
需要额外的导入。loc
方法在技术上是不正确的,因为如果不手动增加时间戳,它就无法定义“大于”关系,这在处理纳秒范围内的时间时可能会令人担忧。因此,将这两种方法结合起来是最佳解决方案IMO: