Получение максимального значения для прокатки 15 минут

Я работаю с данными о запасах, я пытаюсь получить максимальное (наибольшее значение) «последнего» значения за последние 15 минут. Что показано в ожидаемом результате в столбце с именем Max.

Код, который я пробовал, вычисляется так долго, что я уверен, что чего-то не хватает. Не уверен, как это сделать, так как я новичок в расчетах панд для временных рядов. Может ли кто-нибудь дать свое решение. Спасибо

Пробовал код:

for c in df["Last"].dropna():
    df[c]=df["Last"].fillna(0).rolling('15T').max()
new = "Prev15max_min"+df["Last"].dropna()
df.loc[:df.index[0]+pd.DateOffset(minutes=15),new]=np.nan

Данные, которые у меня есть, показаны ниже

Timestamp        Last          
1/20/19 12:15    3071.56
1/20/19 12:17    3097.82
1/20/19 12:17    3097.82
1/20/19 12:18    3095.25
1/20/19 12:19    3087.42
1/20/19 12:20    3095.29
1/20/19 12:21    3095.25
1/20/19 12:22    3093.11
1/20/19 12:23    3103
1/20/19 12:24    3095
1/20/19 12:25    3100.6
1/20/19 12:26    3099.84
1/20/19 12:27    3098.77
1/20/19 12:29    3097.24
1/20/19 12:29    3090
1/20/19 12:30    3090
1/20/19 12:31    3094.2

Ожидаемый результат

Timestamp        Last           Max   
1/20/19 12:15    3071.56
1/20/19 12:17    3097.82
1/20/19 12:17    3097.82
1/20/19 12:18    3095.25
1/20/19 12:19    3087.42
1/20/19 12:20    3095.29
1/20/19 12:21    3095.25
1/20/19 12:22    3093.11
1/20/19 12:23    3103
1/20/19 12:24    3095
1/20/19 12:25    3100.6
1/20/19 12:26    3099.84
1/20/19 12:27    3098.77
1/20/19 12:29    3097.24
1/20/19 12:29    3090          3103
1/20/19 12:30    3090          3103
1/20/19 12:31    3094.29       3103
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
108
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте pandas.to_datetime и rolling.max:

import pandas as pd

df['Timestamp'] = pd.to_datetime(df['Timestamp'])
df = df.set_index('Timestamp')
df['max'] = df['Last'].rolling('15min', min_periods=15).max()
print(df) 

Выход:

                        Last     max
Timestamp                           
2019-01-20 12:15:00  3071.56     NaN
2019-01-20 12:17:00  3097.82     NaN
2019-01-20 12:17:00  3097.82     NaN
2019-01-20 12:18:00  3095.25     NaN
2019-01-20 12:19:00  3087.42     NaN
2019-01-20 12:20:00  3095.29     NaN
2019-01-20 12:21:00  3095.25     NaN
2019-01-20 12:22:00  3093.11     NaN
2019-01-20 12:23:00  3103.00     NaN
2019-01-20 12:24:00  3095.00     NaN
2019-01-20 12:25:00  3100.60     NaN
2019-01-20 12:26:00  3099.84     NaN
2019-01-20 12:27:00  3098.77     NaN
2019-01-20 12:29:00  3097.24     NaN
2019-01-20 12:29:00  3090.00  3103.0
2019-01-20 12:30:00  3090.00  3103.0
2019-01-20 12:31:00  3094.20  3103.0

Если вы предпочитаете, чтобы Timestamp был столбцом, а не индексом, добавьте:

df.reset_index(inplace=True)

Другие вопросы по теме