加快移动平均线的计算

时间:2019-06-04 05:18:57

标签: python-3.x pandas dataframe

以下代码根据一些条件考虑移动平均线。如果行中的日期小于指定的日期(开始日期),则它将返回该列的当前值。一切都很酷,但是运行缓慢(我有> 200000行),可以加速吗?

startdate = pd.to_datetime('2019-06-02')
df['RES1_1Y'] = df.apply(
    lambda x: (df.loc[
        (
            (df.DATE_G < x.DATE_G)
            & (df.DATE_G >= (x.DATE_G + pd.DateOffset(days=-365)))
            & (df.ID1_G == x.ID1_G)
            & (df.ID_C_T == x.ID_C_T)
        ),
        "RES",
    ].mean()) if x.DATE_G > startdate else x.RES1_1Y,
    axis=1,
)

1 个答案:

答案 0 :(得分:0)

签出-https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html

Rolling_mean以及其他一些功能在Pandas文档中的移动窗口功能下分组。

如果这不起作用,请告诉我,我可以共享代码。