You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:16:52