加速熊猫滚动窗口

时间:2020-12-19 16:52:11

标签: python pandas performance dataframe rolling-computation

我想加速我使用 pandas.rolling().apply() 自定义函数的代码。下面的代码运行良好,但速度非常慢。在应用百万行时,有什么方法可以加快速度。

for i in [12, 9, 6, 3]:
    df[f'want_col_{i}'] = df.groupby(['account'])['types'].rolling(window = i).apply(lambda x: sum(x == 1)).values

这个想法是在给定的滚动窗口中计算值。例如,从上面的代码中,我喜欢计算 value 分别等于 1 group by account by given window 12, 9, 6, 3

有没有办法提高速度,谢谢!

1 个答案:

答案 0 :(得分:3)

你可以试试:

df['types_eq_1'] = df['types'].eq(1).astype(int)

for i in [12, 9, 6, 3]:
    df[f'want_col_{i}'] = df.groupby(['account'])['types_eq_1'].rolling(window = i).sum()

df = df.drop('types_eq_1', 1)