Сравнение интервалов с датами / часами в индексе даты и времени (проверка, находится ли час между 2 периодами) - PullRequest
0 голосов
/ 05 декабря 2018

Я знаю, что, возможно, я усложняю эту проблему, но я пытаюсь определить, когда час моего индекса даты и времени находится между временем начала и временем окончания.Я пытался:

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 голосов
/ 05 декабря 2018

При использовании атрибута 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 () , так как между () является методом Series.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...