Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как сделать сдвиг выборки на 4 часа (от -1D-4H до -4H) в Pandas?

Выбираются данные за сутки по индексу. Как мне сделать выборку на сутки в глубину, но с отставанием контрольной точки на 4 часа обратно?
т.е. , к примеру, выбрать не с 12:00 1 октября по 12:00 2 октября , а с 8:00 1 октября по 8:00 2 октября, если таймстамп взятия данных именно в полдень 2 октября?
Подскажите наиболее простой формат команды на выборку или где его искать
ПрограммированиеPython+1
Андрей Баландин
  ·   · 507
Специалист в области управления и информатики в...  · 4 окт 2021
Если выборка храниться в pandas датафрейме то нужно увеличить поле хранящие timestamp на 4 часа. Но формулировка вопроса не совсем понятна...
я пробовал объяснить как можно более коротко - возможно, из-за этого непонятно, извините. Если проще - есть... Читать дальше
@Андрей Баландин, думаю тут стоит посмотреть в сторону булевых масок. На вскидку:
1) получим в переменную текущую дату и время (нам нужно понимать сколько сейчас времени и от чего брать 4 часа)
2) вычтем из текущего времени 4 часа.
3) построить условие вида: где timestamp меньше текущего момента - 4 часа И больше текущего момента - 4 часа - 1 сутки. Это если я вас правильно понял. К сожалению, сейчас не у ПК.
@Андрей Баландин, как будет время приведу пример с кодом если найду подходящий набор данных чтобы это продемонстрировать.
@Артём Бойко, спасибо за ответ, был бы очень признателен за пример кода
@Андрей Баландин, вот пример кода. Правда написал в рамках того, как я понял ваш вопрос... Пример кода
@Андрей Баландин, пример кода посмотрели?
@Артём Бойко, посмотрел, но наверное вопрос неправильно понят. Есть набор данных с индексом по времени, не с постоянной периодизацией. Допустим, с 1 октября по 22:00 5 октября. Пусть это датафрейм Time. Если я применю Time.last('1D'), то получу выборку из датафрейма с 22:00 4 октября по 22:00 5 октября. А мне надо получить выборку с 18:00 4 октября по 18:00 5 октября.
@Андрей Баландин, время начала выборки (сейчас) 05.10.2021 22:00 верно? И нужно получить данные с 05.10.2021 18:00 по 04.10.2021 18:00. Так?
@Артём Бойко, да, с 18:00 4 октября по 18:00 5 октября (индекс по увеличению времени)
@Андрей Баландин, сортировку зададите как вам нужно. Комментарии как это сделать оставил в исходнике.
@Артём Бойко, день добрый! Наиболее простым решением оказалось s.last ('28H')[~s.last ('28H').index.isin(s.last ('4H').index)] (где s - исходный датафрейм)
Тем не менее, спасибо за поддержку в поисках ответа и за идеи реализации.