我想从 30 的滚动窗口中创建一个包含 5 个最高值的平均值的列。对于大型 DataFrame,使用 for 循环非常慢。我尝试将 rolling() 与 nlargest() 一起使用,但它不起作用。有什么建议可以加快速度吗?
def top_values(df, column, days):
top5 = df.nlargest(days, column)
top = top5[column].sum() / days
x = 0
w = 0
for i in df.index:
if x > 30:
df['tops'][x] = top_values(df[w:x], 'column', 5)
w += 1
x += 1