栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于值而不是计数的带有窗口的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+')


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号