基于值而不是计数的带有窗口的pandas滚动计算

基于值而不是计数的带有窗口的pandas滚动计算,第1张

基于值而不是计数的带有窗口的pandas滚动计算

我认为这可以满足您的需求:

In [1]: dfOut[1]:   RollBasis  ToRoll0          1       11          1       42          1      -53          2       24          3      -45          5      -26          8       07         10     -138         12      -29         13      -5In [2]: def f(x):   ...:     ser = df.ToRoll[(df.RollBasis >= x) & (df.RollBasis < x+5)]   ...:     return ser.sum()

上面的函数采用一个值(在这种情况下为RollBasis),然后根据该值对数据框列ToRoll进行索引。返回系列由满足RollBasis +
5标准的ToRoll值组成。最后,对该系列求和并返回。

In [3]: df['Rolled'] = df.RollBasis.apply(f)In [4]: dfOut[4]:   RollBasis  ToRoll  Rolled0          1       1      -41          1       4      -42          1      -5      -43          2       2      -44          3      -4      -65          5      -2      -26          8       0     -157         10     -13     -208         12      -2      -79         13      -5      -5

玩具示例Dataframe的代码,以防其他人尝试:

In [1]: from pandas import *In [2]: import ioIn [3]: text = """   ...:    RollBasis  ToRoll   ...: 0          1       1   ...: 1          1       4   ...: 2          1      -5   ...: 3          2       2   ...: 4          3      -4   ...: 5          5      -2   ...: 6          8       0   ...: 7         10     -13   ...: 8         12      -2   ...: 9         13      -5   ...: """In [4]: df = read_csv(io.BytesIO(text), header=0, index_col=0, sep='s+')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5645038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存