我认为这可以满足您的需求:
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+')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)