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