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

如何用Pandas实现DataFrame OldTop值按标记分段增量计算

实现方案

核心通过分组累计求和实现,无需使用for循环,代码如下:

import pandas as pd

# 此处替换为你实际的初始OldTop基准值
initial_old_top = 100

# 1. 生成递增段分组标记:每次遇到No就新增一个分组,保证被No隔开的连续Yes属于同一分组
temp_df['group_id'] = (temp_df['Prevous_Line_Has_Br'] == 'No').cumsum()

# 2. 同组内仅对Yes行的buffer做累计求和
temp_df['buffer_cumsum'] = temp_df.groupby('group_id')['buffer'].apply(
    lambda s: s.where(temp_df['Prevous_Line_Has_Br'] == 'Yes', 0).cumsum()
)

# 3. 计算最终OldTop值,No行直接沿用前一行结果
temp_df['OldTop'] = initial_old_top + temp_df['buffer_cumsum']
temp_df['OldTop'] = temp_df['OldTop'].ffill()

# 按需删除临时辅助列
temp_df.drop(columns=['group_id', 'buffer_cumsum'], inplace=True)

逻辑说明

  • 分组标记可以保证每次遇到No之后,再次出现Yes时重新开始递增计算
  • where方法将非Yes行的buffer值置为0,不会计入累计结果
  • ffill()向前填充方法自动将No行的OldTop替换为上一行的有效结果,符合停止递增的需求

内容的提问来源于stack exchange,提问作者Megha Sirisilla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:06:02