日期时间索引上带有日期/小时的时间间隔比较(检查一个小时是否在两个时间段之间)

时间:2018-12-04 21:20:40

标签: python python-3.x pandas numpy dataframe

我知道Im可能会使这个问题变得比实际复杂,但是我实际上是在试图确定我的datetime索引的小时在开始时间和结束时间之间。 我尝试过:

rbe60['Hour'] = rbe60.index.hour
rbe60['result'] = rbe60['Hour'].between_time('3:00','23:00')

我也尝试过:

rbe60['Hour'] = rbe60.index[20 <rbe60.index.hour <24]

但我不断 ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()

这是我的df头

                       Open       H       L       C       O
DateTime                                                   
2013-12-30 14:30:00 -0.0756 -0.0729 -0.0756 -0.0737  2.8847
2013-12-30 15:30:00 -0.0735  -0.072 -0.0737 -0.0722  2.8870
2013-12-30 16:30:00 -0.0722 -0.0721 -0.0728 -0.0722  2.8930
2013-12-30 18:00:00 -0.0728 -0.0728 -0.0728 -0.0728  2.8826
2013-12-30 19:00:00 -0.0721 -0.0721 -0.0721 -0.0721  2.8872

1 个答案:

答案 0 :(得分:1)

使用属性hour时,时间将转换为Int,而不再是时间,因此请不要使用
rbe60['result'] = rbe60['Hour'].between_time('3:00','23:00') 使用
rbe60['result'] = rbe60['Hour'].between(3, 23)

这也可以放在一个内衬中

rbe60['result'] = rbe60.index.hour.to_series().between(3, 23)

我认为您不会(或想要)更简洁。

您需要使用to_series()将索引转换为序列,因为between()是序列方法。