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



我知道我可能会让这个问题变得更复杂,但我本质上是在试图确定我的日期时间索引的小时数在开始时间和结束时间之间。我试过了:

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:包含多个元素的数组的真值不明确。使用.any((或.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

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

这也可能是在一个oneliner:

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

我认为你不会得到(或想得到(比这更简洁的东西。

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

最新更新