首页 > 解决方案 > 如何计算特定日期之间数据框索引的每周平均值?

问题描述

我正在尝试计算 Netflix 股票开盘价和收盘价的每周平均走势。每周平均值需要返回 和 之间的时间startend。移动索引是我正在操作的数据框的一部分,称为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( '

现在它就像魔术一样工作。

标签: pythonpandasdataframeresampling

解决方案


推荐阅读