Pandas:选择两个日期之间的数据帧行(日期时间索引)

2024-03-29 01:21:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Pandas数据帧,它有一个DatetimeIndex和一列MSE Loss 索引的格式如下:

DatetimeIndex(['2015-07-16 07:14:41', '2015-07-16 07:14:48',
           '2015-07-16 07:14:54', '2015-07-16 07:15:01',
           '2015-07-16 07:15:07', '2015-07-16 07:15:14',...]

包括几天。

我想在不知道实际时间间隔的情况下选择特定日期的所有行(所有时间)。 例如:在2015-07-16 07:00:002015-07-16 23:00:00之间

我尝试了这里概述的方法:here

但是df[date_from:date_to]

输出:

KeyError: Timestamp('2015-07-16 07:00:00')

所以它需要精确的指数。此外,我没有date列。只有日期索引。

通过提供日期来选择一整天的最佳方法是什么,然后如何在特定的一天内选择特定的时间范围?


Tags: to数据方法frompandasdfdate间隔
2条回答

选项1:

样品测向:

df
                      a
2015-07-16 07:14:41  12
2015-07-16 07:14:48  34
2015-07-16 07:14:54  65
2015-07-16 07:15:01  34
2015-07-16 07:15:07  23
2015-07-16 07:15:14   1

看起来你没有.loc就在尝试这个(没有它就不行):

df.loc['2015-07-16 07:00:00':'2015-07-16 23:00:00']
                      a
2015-07-16 07:14:41  12
2015-07-16 07:14:48  34
2015-07-16 07:14:54  65
2015-07-16 07:15:01  34
2015-07-16 07:15:07  23
2015-07-16 07:15:14   1

选项2:

可以对索引使用布尔索引:

df[(df.index.get_level_values(0) >= '2015-07-16 07:00:00') & (df.index.get_level_values(0) <= '2015-07-16 23:00:00')]

您可以使用truncate

begin = pd.Timestamp('2015-07-16 07:00:00')
end = pd.Timestamp('2015-07-16 23:00:00')

df.truncate(before=begin, after=end)

相关问题 更多 >