在存在时间间隔的情况下,Python中的有效指数移动平均线

时间:2018-09-21 02:17:47

标签: python pandas performance time-series moving-average

我正在大型数据帧上计算EMA,但是由于数据不连续,因此无法使用pandas .ewm函数。我希望让我的EMA在每个间隔后都能“重置”。所谓“重置”,是指间隙之后的第一个点的EMA值就是该点的值。 EMA [间隔后的点] = df [间隔后的点]否则,EMA [时间] = df [时间] * alpha + EMA [time-1] *(1-alpha)。

我编写了以下效率很低的代码,我想问一问是否有更好的方法来做到这一点。

def emaFrame(df, emaAlpha = 0.5):
    df = df.copy()
    df.reset_index(inplace = True)

    df['dtPrev'] = df['date'] - df['date'].shift(1)
    df['Check'] = df['dtPrev'] == datetime.timedelta(minutes=60)

    for index, row in df.iloc[1:].iterrows():
        if row['Check']:
           df.loc[index] = df.loc[index] * emaAlpha + df.loc[index-1] * (1-emaAlpha)

    return(df)

0 个答案:

没有答案