gpt4 book ai didi

python - 动态窗口上的滚动总和

转载 作者:行者123 更新时间:2023-12-02 09:53:44 24 4
gpt4 key购买 nike

我是 Python 新手,上次编码是在 80 年代中期,所以我感谢您的耐心帮助。

看来 .rolling(window) 要求窗口是固定整数。我需要一个滚动窗口,其中窗口或回溯期是动态的并由另一列给出。

在下表中,我查找 Lookbacksum,它是 Lookback 列指定的数据的滚动总和。

d={'Data':[1,1,1,2,3,2,3,2,1,2],
'Lookback':[0,1,2,2,1,3,3,2,3,1],
'LookbackSum':[1,2,3,4,5,8,10,7,8,3]}
df=pd.DataFrame(data=d)

例如:

   Data  Lookback  LookbackSum
0 1 0 1
1 1 1 2
2 1 2 3
3 2 2 4
4 3 1 5
5 2 3 8
6 3 3 10
7 2 2 7
8 1 3 8
9 2 1 3

最佳答案

您可以创建与df.apply一起使用的自定义函数,例如:

def lookback_window(row, values, lookback, method='sum', *args, **kwargs):
loc = values.index.get_loc(row.name)
lb = lookback.loc[row.name]
return getattr(values.iloc[loc - lb: loc + 1], method)(*args, **kwargs)

然后将其用作:

df['new_col'] = df.apply(lookback_window, values=df['Data'], lookback=df['Lookback'], axis=1)

可能存在一些极端情况,但只要您的索引对齐并且是唯一的 - 它应该满足您想要做的事情。

关于python - 动态窗口上的滚动总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59919277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com