Как рассчитать среднее значение за неделю индекса данных между указанными c датами? - PullRequest
1 голос
/ 08 марта 2020

Я пытаюсь рассчитать среднее недельное движение цен открытия и закрытия акций Netflix. Среднее значение за неделю должно быть возвращено за период от start до end. Индекс движения является частью кадра данных, которым я управляю. Он называется nflx_Frame.

            open   close   movement  py_date
2020-03-06  367.70  368.97  1.27    2020-03-06
2020-03-05  381.00  372.78  -8.22   2020-03-05
2020-03-04  377.77  383.79  6.02    2020-03-04
2020-03-03  381.03  368.77  -12.26  2020-03-03
2020-03-02  373.11  381.05  7.94    2020-03-02
... ... ... ... ...
2019-10-18  289.36  275.30  -14.06  2019-10-18
2019-10-17  304.49  293.35  -11.14  2019-10-17
2019-10-16  283.12  286.28  3.16    2019-10-16
2019-10-15  283.82  284.25  0.43    2019-10-15
2019-10-14  283.93  285.53  1.60    2019-10-14

Вот мой код:

start = create_py_date_from_str('2020-02-06') #inital date
end = create_py_date_from_str('2020-03-06')

def week_avg(df, start):
    return df['movement'].resample('W').mean().between(start, end, inclusive = True)

week_avg(nflx_Frame, start)
nflx_Frame

Но он возвращает это: TypeError: '> = не поддерживается между экземплярами «float» и «datetime.datetime». Буду признателен за любую помощь в этом.

ОБНОВЛЕНИЕ

Я исправил проблему. Я изменил его на:

def week_avg(df, time):
period = df[df['py_date'].between(time, end, inclusive = True)]
cut_off = datetime.strptime('2020-01-01','%Y-%m-%d')
if time < cut_off:
    return('ERROR; dates out of range')
elif time > today:
    return('ERROR; dates out of range')
else:
    return period['movement'].resample('W').mean( '

И теперь он работает как волхвы c.

...