У меня есть список списков из двух элементов типа 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]
Источник: https://stackoverflow.com/questions/770 ... a-datafram