Создайте новую базу столбцов фрейма данных на основе результатов поиска по другому столбцу

#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')