#python #pandas #dataframe #numpy
#питон #панды #фрейм данных #тупица
Вопрос:
У меня есть фрейм данных, как показано ниже, с указанием даты, времени и цены. Я хотел бы создать новую колонку «самая низкая цена», которая проверяет самую низкую цену за последние 5 минут и возвращает значение цены. Есть ли способ сделать это?
Ввод :
DateTime Price 23/11/2021 23:59 57540.60 23/11/2021 23:58 57560.96 23/11/2021 23:57 57581.44 23/11/2021 23:56 57617.08 23/11/2021 23:55 57710.88 23/11/2021 23:54 57654.52 23/11/2021 23:53 57635.68 23/11/2021 23:52 57644.85 23/11/2021 23:51 57626.73
Ожидаемый Результат :
DateTime Price Lowest Price (Past 5 min) 23/11/2021 23:59 57640.60 57560.96 23/11/2021 23:58 57560.96 57560.96 23/11/2021 23:57 57581.44 57581.44 23/11/2021 23:56 57617.08 57554.52 23/11/2021 23:55 57710.88 . 23/11/2021 23:54 57554.52 . 23/11/2021 23:53 57635.68 . 23/11/2021 23:52 57644.85 23/11/2021 23:51 57626.73
Комментарии:
1. Вы были после
df.set_index(pd.to_datetime(df['DateTime'])).rolling('5T').min()
2. То, что сказал @wwnde, похоже на решение. Я предполагаю, что вам придется отменить df df[::-1], а затем сделать это снова, когда расчет будет выполнен.
Ответ №1:
Попробуйте это :
df.set_index('DateTime').rolling(5).min().shift(-4).reset_index().add_suffix(' min')
если вы хотите, чтобы выглядело более 5 рядов, соответствующим образом отрегулируйте прокатку. rolling(n)
и shift(n-1)
Ответ №2:
Я использую приведенный ниже код для решения этой проблемы.
price_df_min=price_df.set_index('DateTime').rolling(5).min().shift(-4).reset_index().add_suffix(' min')