Учитывая список списков двух временных меток, как проверить, находится ли индекс кадра данных внутри этого диапазона датPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Учитывая список списков двух временных меток, как проверить, находится ли индекс кадра данных внутри этого диапазона дат

Сообщение Гость »


У меня есть список списков из двух элементов типа pd.Timestamp, например:

Код: Выделить всё

intervals = [
[pd.Timestamp('2023-01-01 02:00:00'), pd.Timestamp('2023-01-01 03:00:00')],
[pd.Timestamp('2023-01-01 05:00:00'), pd.Timestamp('2023-01-01 07:00:00')],
[pd.Timestamp('2023-01-01 07:30:00'), pd.Timestamp('2023-01-01 08:00:00')],
]
У меня также есть образец фрейма данных, например:

Код: Выделить всё

data = {'value': [1, 2, 3, 4]}
index = [
pd.Timestamp('2023-01-01 01:00:00'),
pd.Timestamp('2023-01-01 02:00:00'),
pd.Timestamp('2023-01-01 03:00:00'),
pd.Timestamp('2023-01-01 04:00:00'),
]
df = pd.DataFrame(data, index=index)
Теперь, как я могу проверить, находится ли индекс кадра данных внутри всех интервалов даты и времени? Другими словами, для каждого элемента индекса кадра данных (строки) проверьте, содержится ли эта строка в первом интервале, во втором интервале или в третьем интервале и т. д., выполнив что-то вроде:

Код: Выделить всё

for start, end in intervals:
df.index >= start & df.index >= end
Моя идея заключалась в следующем:
  • Создать логическую маску для каждого интервала, которая проверяет, является ли каждый элемент индекса внутри интервала

Код: Выделить всё

masks = [
[False, True, True, False],
[False, False, False, False],
[False, False, False, False],
]
  • Сократите приведенный выше список масок в одну, применив | (логический или) оператор

Код: Выделить всё

mask = [False, True, True, False]
I wish to do 1 and 2 in a vectorized manner, so I would like to use numpy or pandas when possible. I am managing the data structure in Python with lists though at the moment. Which is the fastest way and which is the most elegant one also?


Источник: https://stackoverflow.com/questions/770 ... a-datafram
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»