我知道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
答案 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()是序列方法。