Python - Pandas: получить максимальное значение за последние 5 дней - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть CSV-файл с двумя столбцами, дата и цена.Я хочу создать 3-й столбец с максимальным значением «Цена» за последние 5 дней.Не последние 5 строк или индекс, а 5 дней.

Содержимое файла "example.csv"

Date            Price
2018-07-23	124.44
2018-07-24	125.49
2018-07-25	123.26
2018-07-31	124.08
2018-08-01	125.10
2018-08-04	121.41
2018-08-05	119.17
2018-08-06	118.58

Это должно выглядеть так:

Date            Price   High5
2018-07-23	124.44  124.44
2018-07-24	125.49  125.49
2018-07-25	123.26  125.49
2018-07-31	124.08  124.08
2018-08-01	125.10  125.10
2018-08-04	121.41  125.10
2018-08-05	119.17  125.10
2018-08-06	118.58  121.41

С этим кодом я получаю максимум всего столбца "Закрыть" для каждой строки.

import pandas as pd

df = pd.read_csv('example.csv', parse_dates=True, index_col=0)
df['High5'] = df['Close'].max()

print(df)

С этим кодом я получаю максимумпоследние 5 дней, заканчивающиеся на 2018-08-06 для всех строк.

import pandas as pd

df = pd.read_csv('example.csv', parse_dates=True, index_col=0)
rng = pd.date_range(end='2018-08-06', periods=5, freq='D')
df['High5'] = df['Price'].loc[rng].max()

print(df['High5'])

Мне не нужно одинаковое значение для всех строк.И я знаю, что неправильно работать с фиксированной (конечной) датой.Но я не знаю ответа с моим знанием начинающих.

1 Ответ

0 голосов
/ 25 сентября 2018

Вы ищите прокат

df=df.set_index('Date')
df.index=pd.to_datetime(df.index)
df.rolling('5 D').max()
#df=df.rolling('5 D').max().reset_index()
Out[62]: 
             Price
Date              
2018-07-23  124.44
2018-07-24  125.49
2018-07-25  125.49
2018-07-31  124.08
2018-08-01  125.10
2018-08-04  125.10
2018-08-05  125.10
2018-08-06  121.41
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...