Python Pandas函数可在上一行和当前行上进行计算

时间:2019-07-24 21:27:05

标签: python pandas

'EXCEL SHEET EXAMPLE'

给一个DataFrame我想转换到另一个,其中transform函数在前一行和当前行上运行。 在给定的示例中,

RowID =1 is copied as is,

但从RowID 2开始,

Current Cell = Max(CurrentCell, Previous Cell * 0.9999 )
H4 <= MAX(B4, H3*0.9999)
where,
B4  = original value, 
H3  = the previous row **'After Transformation'**

enter image description here

1 个答案:

答案 0 :(得分:2)

即将开始,用cumsumcumcount创建您自己的函数,然后用update

def yourfun(s):
    s.update(s.mask(s==0).ffill()-s.groupby(s.mask(s==0).eq(1).cumsum()).cumcount()*0.0001)
    return s
df.apply(yourfun)
Out[291]: 
        1       2       3       4
0  0.0000  0.0000  1.0000  0.0000
1  0.0000  1.0000  0.9999  1.0000
2  0.0000  0.9999  0.9998  0.9999
3  1.0000  0.9998  0.9997  1.0000
4  0.9999  1.0000  1.0000  0.9999
5  0.9998  0.9999  0.9999  0.9998
6  1.0000  0.9998  0.9998  0.9997