实现Ratchet逻辑:仅当下一年值更大时替换DataFrame的percentpp值
实现DataFrame的棘轮效应(仅保留高位值)
我现在需要处理一个DataFrame(命名为df),想实现类似棘轮效应的逻辑:每个cell_id对应的percentpp值只能维持高位或上升,不能回落。具体规则是:遍历数据中的年份,当同一个cell_id下一年的percentpp值大于当前年份的值时,就把当前年份的percentpp替换成下一年的数值。
现有数据示例
cell_id year percentpp 1 40 2011 3 2 41 2011 1 3 42 2011 0 4 43 2011 0 5 40 2012 1 6 41 2012 5 7 42 2012 1 8 43 2012 5 9 40 2013 2 10 41 2013 2 11 42 2013 2 12 43 2013 0 13 40 2014 2 14 41 2014 3 15 42 2014 3 16 43 2014 3
期望处理结果
cell_id year percentpp 1 40 2011 3 2 41 2011 1 3 42 2011 0 4 43 2011 0 5 40 2012 3 6 41 2012 5 7 42 2012 1 8 43 2012 5 9 40 2013 3 10 41 2013 5 11 42 2013 2 12 43 2013 5 13 40 2014 3 14 41 2014 5 15 42 2014 3 16 43 2014 5
我的初步思路(伪代码)
我原本想写一个类似R/SQL逻辑的函数,通过lapply循环来实现,但不确定怎么正确落地这个逻辑:
function(x) { if df$percentpp[year+1,] is greater than df$percentpp[year,] when cell_id$year = cell_id$year+1 then df$percentpp[year,] <- df$percentpp[year+1,] }
内容的提问来源于stack exchange,提问作者spops
相关产品推荐
相关产品推荐

