加速 pandas 滚动 window
Speed up pandas rolling window
我想加速我使用 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
这个想法是在给定的滚动中计算价值 window。例如,从上面的代码我喜欢计算值等于 1
group by account
by given window 12, 9, 6, 3
respectively.
有没有办法提高速度,谢谢!
你可以试试:
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)
我想加速我使用 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
这个想法是在给定的滚动中计算价值 window。例如,从上面的代码我喜欢计算值等于 1
group by account
by given window 12, 9, 6, 3
respectively.
有没有办法提高速度,谢谢!
你可以试试:
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)